如何插入SQL Server Compact数据库

时间:2014-07-25 19:40:51

标签: 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, 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();
     }
   }

这不起作用。我没有收到错误,但我的数据库没有收到插入内容。当我在ExecuteNonQuery处中断时,我注意到生成的查询没有为@parameters获取正确的值。所以实际的查询看起来像这样:

INSERT INTO film (naam, medium_id) VALUES (@naam, @medium_id)

但它应该是这样的:

INSERT INTO film (naam, medium_id) VALUES ('title1', 'disc1')

我应该怎么做才能从字符串(dbNaamdbMedium_id等)中取代@naam@medium_id中的值?

P.S。当我将此代码与不使用AddWithValue的查询一起使用时,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

我没有对此进行测试,但根据您的查询,我感觉发生了错误,因为列名中使用了keyword

namecolumnnumber都是SQL关键字。避免它的一种方法是在列名称周围添加[],例如INSERT INTO [column] ([name], [number]),这将告诉SQL这些是列名而不是尝试调用函数或其他东西。但是,我的建议始终是避免使用关键字。

如果它修复了您的错误,请尝试告诉我。

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