C# INSERT INTO语句中出现语法错误

C# INSERT INTO语句中出现语法错误,c#,C#,有人能帮我吗 access 2007假设您使用了正确的模式来处理参数,查询应该可以正常工作 string cmdStr = "INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName)"; 一个问题可能是ID列被标记为标识列。在这种情况下,必须临时启用标识插入: var conn = new SqlConnection(connStr); conn.Open(); var cmd = new SqlCommand(cmdStr, conn);

有人能帮我吗


access 2007

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

string cmdStr = "INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName)";
一个问题可能是ID列被标记为标识列。在这种情况下,必须临时启用标识插入:

var conn = new SqlConnection(connStr);
conn.Open();
var cmd = new SqlCommand(cmdStr, conn);
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@FirstName", firstName);
或者,如上所述,如果您有一个不可为null的列,那么当然您必须为它包含一个值

在任何情况下,抛出的SqlException或OLEDBEException都应该准确地告诉您出了什么问题


问题是:string cmdStr=“INSERT-INTO-Students(ID,FirstName,City)值(@ID,@FirstName,@City)”工作正常

这就是问题所在,您的表有3列,但可能没有
城市
的默认值,如果您不告诉它向
城市
输入什么,它不知道并且将失败

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

string cmdStr=“插入到名称(ID,FirstName)值(1001,'Siya')”中

  • 确保您实际上正在向这两个变量传递一个值(在代码中放置断点,进行逐步调试,显示要插入的值,等等)
  • 请确保包含“包装您的字符链。示例:'Siya'

它可能会帮助您在运行其他insert语句之前分析代码中所做的工作。

您所说的“尝试[]”是什么意思?您到底尝试了什么,发生了什么?[Names]仍然尝试了SyntextIt's not auto number its primary,not autoPlease并包含它们。问题是:string cmdStr=“INSERT INTO Students(ID,FirstName,City)值(@ID,@FirstName,@City)”正在使用finevar cmdStr=@“SET IDENTITY\u INSERT Names ON;”@“在名称(ID,FirstName)值(@ID,@FirstName)中插入;“+@”将标识设置为“插入名称”禁用;“它的ole db SetIdentiLife不适用于我,它可以为空。请使用完整的句子。很难理解你想说什么。上述情况是否意味着你正在使用OleDB,并且该表中的所有列都可以为空?OleDB无法查看表中是否包含标识列,以及你是否试图在表上设置identity_INSERT,而h no identity列,SQL Server引发错误。请检查异常以确定是哪一个异常。我刚刚注意到您使用Access 2007更新了您的问题…如果您使用的是Access后端,请忘记identity\u INSERT。是的,我忘了说它在beginok thnx的Access 2007帮助我了解了可能的问题
var cmdStr = @"SET IDENTITY_INSERT Names ON; " +
             @"INSERT INTO Names(ID,FirstName) VALUES(@ID,@FirstName); " +
             @"SET IDENTITY_INSERT Names OFF;"