SQL Server Compact插入

use*_*440 2 c# sql-server-ce

我想将数据插入到sql server Compact版本的数据库表截图是这里>>> 我想在用户中添加数据添加脚本如下

SqlCeConnection Con = new SqlCeConnection();
Con.ConnectionString = "Data Source = 'Database.sdf';" +
                       "Password='Password';";
Con.Open();
int Amount=Convert.ToInt32(AmBox.Text),
Code=Convert.ToInt32(MCode.Text),
Num=Convert.ToInt32(MNum.Text);
string Name=Convert.ToString(NBox.Text),
FName=Convert.ToString(SOBox.Text),
Address=Convert.ToString(AdBox.Text);

SqlCeCommand Query =new SqlCeCommand("INSERT INTO Users VALUES " + 
                        "(++ID,Name,FName,Address,Code,Num,Amount)",Con);
Query.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

当它运行时,它会生成一个错误SAYING"列名无效[节点名称(如果有)=,列名= ID]

我不明白问题请好好告诉我谢谢!

Ste*_*eve 6

您应该将代码更改为这样的代码

using(SqlCeConnection Con = new SqlCeConnection("Data Source = 'Database.sdf';" + 
                                                "Password='Password';")
{ 
    Con.Open(); 
    SqlCeCommand Query = new SqlCeCommand("INSERT INTO Users " + 
                             "(Name,FName,Address,MCode,MNum,Amount) " +
                             "VALUES (@Name,@FName,@Address,@Code,@Num,@Amount)",Con); 

    Query.Parameters.AddWithValue("@Name", NBox.Text);
    Query.Parameters.AddWithValue("@FName", SOBox.Text)); 
    Query.Parameters.AddWithValue("@Address",AdBox.Text)); 
    Query.Parameters.AddWithValue("@Code", Convert.ToInt32(MCode.Text));
    Query.Parameters.AddWithValue("@Num", Convert.ToInt32(MNum.Text));
    Query.Parameters.AddWithValue("@Amount" , Convert.ToInt32(AmBox.Text));
    Query.ExecuteNonQuery(); 
}
Run Code Online (Sandbox Code Playgroud)
  • using语句保证正确处理连接
  • 参数集合避免了Sql注入攻击和引用问题
  • 使用ExecuteNonQuery因为这是一个插入查询.
  • 删除了++ ID,它不是传递给数据库的有效值

如果ID字段是Identity列,则不从代码传递任何值,而是让数据库计算下一个值.
另外,我不确定你真的需要在数据源和密码密钥的连接字符串中使用单引号.

编辑---有时.SDF数据库可能位于不同的文件夹中.(现代操作系统阻止在应用程序文件夹中写入).
在这种情况下,必须在连接字符串中设置SDF文件的路径.
例如,SDF可以位于C:\ ProgramData目录的子文件夹中.

string conString = "Data Source=" + 
        Path.Combine(
               Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
               "MyAppData\\database.sdf") + ";Password=yourPassword;";
Run Code Online (Sandbox Code Playgroud)