C# 如何插入SQL Server Compact数据库

C# 如何插入SQL Server Compact数据库,c#,sql,database,insert,C#,Sql,Database,Insert,更新问题: 出于某种原因,我的代码正常工作,一定是打字错误或其他什么,仍然不确定。然而,最后一件事让我困惑。我有以下代码: string strConn = @"Data Source = |DataDirectory|\Database\DbFilm.sdf;Persist Security Info=False"; string insQuery = "INSERT INTO film (naam, medium_id, genre_id, land_id, jaar, lengte, v

更新问题:

出于某种原因,我的代码正常工作,一定是打字错误或其他什么,仍然不确定。然而,最后一件事让我困惑。我有以下代码:

string strConn = @"Data Source = |DataDirectory|\Database\DbFilm.sdf;Persist Security Info=False";

string insQuery = "INSERT INTO film (naam, medium_id, genre_id, land_id, jaar, lengte, videoformaat_id) VALUES (@naam, @medium_id, @genre_id, @land_id, @jaar, @lengte, @videoformaat_id)";

using (SqlCeConnection con = new SqlCeConnection(strConn))
{
  con.Open();
    using (SqlCeCommand Query = new SqlCeCommand(insQuery, con))   
    {
     Query.Parameters.AddWithValue("@naam", dbNaam);
     Query.Parameters.AddWithValue("@medium_id", dbMedium_id);
     Query.Parameters.AddWithValue("@genre_id", dbGenre_id);
     Query.Parameters.AddWithValue("@land_id", dbLand_id);
     Query.Parameters.AddWithValue("@jaar", dbJaar);
     Query.Parameters.AddWithValue("@lengte", dbLengte);
     Query.Parameters.AddWithValue("@videoformaat_id", dbVideoformaat_id);

     Query.CommandType = System.Data.CommandType.Text;
     Query.ExecuteNonQuery();
     {
       con.Close();
     }
   }
这是行不通的。我没有收到错误,但我的数据库没有收到插入。当我在ExecuteOnQuery中断时,我注意到结果查询没有获得@parameters的正确值。因此,实际的查询简言之如下:

INSERT INTO film (naam, medium_id) VALUES (@naam, @medium_id)
但应该是这样的:

INSERT INTO film (naam, medium_id) VALUES ('title1', 'disc1')
我应该如何从字符串dbNaam、dbMedium_id等中获取值,以代替查询中的@naam、@medium_id

另外,当我在不使用AddWithValue的查询中使用此代码时,它工作得很好。

像这样试试

INSERT INTO Table_Name(column1,column2) VALUES (@Val1,@Val2)", con);

我没有对此进行测试,但根据您的查询,我感觉出现错误是因为在列名中使用了关键字

名称、列、编号都是SQL关键字。一种避免这种情况的方法是在列名周围放一个[],例如,在[column][name]、[number]中插入,这将告诉SQL这些是列名,而不是试图调用函数或其他东西。然而,我的建议总是避免使用关键字

试着让我知道它是否修复了您的错误


其他提示:由于您可以获取till ExecuteOnQuery,因此在那里设置一个断点,然后右键单击并查看发送到数据库的实际查询。复制查询并将其直接粘贴到数据库中,然后查看它是否运行。

。。。删除捕获并找出可能是因为未添加第二个参数而导致的异常情况?我收到以下错误:System.Data.SqlServerCe.SqlCeException类型的未处理异常发生在System.Data.SqlServerCe.dllSorry,ByteBlast中,这是错误的复制粘贴。第二个参数是在我的原始代码中编辑我的问题。第二个参数应该是数字吗?谢谢,但这实际上是我的。它不起作用。另外,如果没有Add parameters…values 123,'abc'它就不起作用了。我将查询从ExecuteOnQuery特征线直接复制粘贴到数据库中,在那里它起作用。还尝试了另一个名为“lokatie”的表,该表包含列“ruimte”INT和“naam”VARCHAR。我将查询插入到lokatie ruimte中,naam值为1,“abc”查询直接在数据库中工作,但不在我的代码中。