声明SQL Server无法正常工作

时间:2013-10-23 20:36:07

标签: c# razor sql-server-ce

我正在使用带有C#的razor,我需要在SQL中声明一个变量,但它不起作用。

insert_data = db.Query("DECLARE @myid INT");

我收到以下错误

  

解析查询时出错。 [令牌行号= 1,令牌行偏移= 1,令牌错误= DECLARE]

编辑:

我正在尝试将数据放入一个表中,然后获取其唯一ID并将其插入另一个表中。

insert_data = db.Query("INSERT INTO sorted (sorted_words) SELECT '" + sorted_word + "' WHERE NOT EXISTS (SELECT sorted_words FROM sorted WHERE sorted_words = '" + sorted_word + "')");
insert_data = db.Query("DECLARE @myid BIGINT");
insert_data = db.Query("SET @myid = scope_identity()");
insert_data = db.Query("INSERT INTO words (words, sorted_id) SELECT '" + word + "', @myid WHERE NOT EXISTS (SELECT words FROM words WHERE words = '" + word + "')");

3 个答案:

答案 0 :(得分:1)

尝试使用ExecuteStoreCommand而不是使用Query

Refrence: Entity Framework : Set MySQL custom environment variables

答案 1 :(得分:0)

我建议编写一个包含所有语句的存储过程,并从代码中执行此存储过程。这将更容易管理。

答案 2 :(得分:0)

SQL Compact参数的声明方式与SQL Server的声明方式不同。使用数据库帮助程序时,您应该为参数@0@1@2等命名,每次递增1。此外,Database.Query方法用于选择多行数据。您应该使用Execute进行插入,使用GetLastInsertId获取最新行的标识值:

db.Execute("INSERT INTO sorted (sorted_words) SELECT @0 WHERE NOT EXISTS (SELECT sorted_words FROM sorted WHERE sorted_words = @0)", sorted_word);
var id = (int)db.GetLastInsertId();
db.Execute("INSERT INTO words (words, sorted_id) SELECT @0, @1 WHERE NOT EXISTS (SELECT words FROM words WHERE words = @0)", word, id);

在此处阅读有关在Razor网页中处理数据的更多信息:http://www.asp.net/web-pages/tutorials/data

相关问题