捕获到Sql Expression,解析查询时出错

时间:2013-01-22 10:33:56

标签: c# .net sql-server-ce

我试图将数据插入到我的压缩数据库中,我收到了这个错误:

There was an error parsing the query. [ Token line number = 1,Token line offset = 1,Token in error = USE ]

这是我的代码,主要在网上找到:

                SqlCeConnection conn = new SqlCeConnection(@"Data Source=|DataDirectory|\CompactDatabase.sdf");
                conn.Open();

                SqlCeCommand cmd = conn.CreateCommand();
                cmd.CommandText = "USE Movie INSERT INTO Movie(title, ean) VALUES(?,?)";
                cmd.Parameters.AddWithValue("@title", title);
                cmd.Parameters.AddWithValue("@ean", ean);
                cmd.Prepare();                
                cmd.ExecuteNonQuery();

有人想出问题吗?

3 个答案:

答案 0 :(得分:3)

  

有人想出问题吗?

只需丢弃USE子句并执行此查询:

INSERT INTO Movie(title, ean) VALUES(?,?)

USE是T-SQL中数据库之间的上下文切换子句,此处不适用。

答案 1 :(得分:0)

你的commandtext是参数化方面的错误。尝试使用@title@ean而不是?,?。像这样;

cmd.CommandText = "INSERT INTO Movie(title, ean) VALUES(@title, @ean)";

也删除USE Movie部分。

查看C# SqlParameter这篇文章很棒。

答案 2 :(得分:0)

尝试:

USE Movie; INSERT INTO Movie(title, ean) VALUES(?,?)

注意; IIRC,这与SQL中的GO相同。