我在INSERT INTO语句中遇到语法错误

时间:2016-04-23 16:50:19

标签: c#

string cmdStr = "INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName)";

试过[]没有帮助可以帮助我吗?

访问2007

3 个答案:

答案 0 :(得分:1)

  

问题是:string cmdStr =“INSERT INTO学生(ID,FirstName,City)VALUES(@ ID,@ FirstName,@ City)”工作正常

这就是问题,你的表有3列,但可能没有City的默认值,如果你不告诉它要放入City的内容,它不知道并且会失败。

您必须始终指定城市或编辑表格定义以包含默认值City

答案 1 :(得分:0)

假设您使用正确的模式来处理参数,查询应该可以正常工作。

var conn = new SqlConnection(connStr);
conn.Open();
var cmd = new SqlCommand(cmdStr, conn);
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@FirstName", firstName);

如果ID列标记为标识列,则可能存在一个问题。在这种情况下,您必须暂时启用身份插入:

var cmdStr = @"SET IDENTITY_INSERT Names ON; " +
             @"INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName); " +
             @"SET IDENTITY_INSERT Names OFF;"

或者,如上所述,如果您的列不可为空,那么您当然必须包含一个值。

在任何情况下抛出SqlException或OleDbException都应该告诉你到底出了什么问题。

答案 2 :(得分:0)

  

string cmdStr =" INSERT INTO Names(ID,FirstName)VALUES(1001,' Siya')"工作

  • 确保您实际上将值传递给两个变量(在代码中放置断点,逐步调试,向您展示您要插入的值等)
  • 请确保包含' ' 包装你的char链。示例:' Siya '

在运行插入到学生中的其他插入语句之前,可能会帮助您分析代码中的操作。