Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET中插入错误_C#_Asp.net_Sql_Ms Access - Fatal编程技术网

C# 在ASP.NET中插入错误

C# 在ASP.NET中插入错误,c#,asp.net,sql,ms-access,C#,Asp.net,Sql,Ms Access,嘿,我收到一个错误,说我的代码在插入数据库时有问题,但我找不到它。错误表明它是INSERT语句中的某个内容,但出现在行“cmd.ExecuteNonQuery();”上。我正在使用access数据库 错误:INSERT INTO语句中出现语法错误。 con.Open(); string mysql; mysql = "INSERT INTO [User](FirstName,Surname,Age,HouseNumber,PostCode,Username,Password)

嘿,我收到一个错误,说我的代码在插入数据库时有问题,但我找不到它。错误表明它是INSERT语句中的某个内容,但出现在行
“cmd.ExecuteNonQuery();”
上。我正在使用access数据库


错误:INSERT INTO语句中出现语法错误。

con.Open();
string mysql; 
mysql = "INSERT INTO [User](FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
         VALUES (?,?,?,?,?,?,?)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddWithValue("@p1", tbFirstName.Text);
cmd.Parameters.AddWithValue("@p2", tbSurname.Text);
cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));
cmd.Parameters.AddWithValue("@p4", tbAddress1.Text);
cmd.Parameters.AddWithValue("@p5", tbPostCode.Text);
cmd.Parameters.AddWithValue("@p6", tbUsername.Text);
cmd.Parameters.AddWithValue("@p7", tbPassword.Text);
cmd.ExecuteNonQuery();
con.Close();

当您添加带有值的参数时,需要将其转换为匹配类型,如果年龄是数字,则

cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));
你也可以试一下

"INSERT INTO [User] ([FirstName], [Surname], [Age], [HouseNumber], [PostCode], [Username], [Password]) VALUES (?,?,?,?,?,?,?)";

当您添加带有值的参数时,需要将其转换为匹配类型,如果年龄是数字,则

cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));
你也可以试一下

"INSERT INTO [User] ([FirstName], [Surname], [Age], [HouseNumber], [PostCode], [Username], [Password]) VALUES (?,?,?,?,?,?,?)";

您是否尝试过用参数替换

更正:我认为您必须添加
OleDBParameters
如下:

con.Open();
string mysql; 
mysql = "INSERT INTO User(FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
     VALUES (@p1,@p2,@p3,@p4,@p5,@p6,@p7)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddRange(new OleDbParameter[]
{
    new OleDbParameter("@p1", tbFirstName.Text),
    new OleDbParameter("@p2", tbSurname.Text),
           ...
});
cmd.ExecuteNonQuery();
con.Close();

您是否尝试过用参数替换

更正:我认为您必须添加
OleDBParameters
如下:

con.Open();
string mysql; 
mysql = "INSERT INTO User(FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
     VALUES (@p1,@p2,@p3,@p4,@p5,@p6,@p7)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddRange(new OleDbParameter[]
{
    new OleDbParameter("@p1", tbFirstName.Text),
    new OleDbParameter("@p2", tbSurname.Text),
           ...
});
cmd.ExecuteNonQuery();
con.Close();


确切的错误消息是什么?您的表看起来怎么样?INSERT INTO语句中出现语法错误。数据库字段反映insert语句的字段。确切的错误消息是什么?您的表看起来怎么样?INSERT INTO语句中出现语法错误。数据库字段反映insert语句的字段。添加此字段,谢谢,但仍然会收到相同的错误消息。@ChristopherDunne
[PASSWORD]
也是保留字,最好您可以通过为所有列和表名添加
[]
进行测试。修复了此字段,谢谢,所有这些复杂的答案,只是:)添加此字段,谢谢,但仍然收到相同的错误消息。@ChristopherDunne
[PASSWORD]
也是保留字,最好您可以通过为所有列和表名添加
[]
进行测试修复了它,谢谢,所有这些复杂的答案,只是:)Access数据库需要“?”以防万一尝试了,什么也没做。错误仍然存在,谢谢。似乎缺少一个括号,它在哪里关闭,将尝试一下,干杯。现在我得到。。。用户代码未处理ArgumentException。。。OleDbParameter已包含在另一个OleDbParameterCollection中。
当CommandType设置为Text时,OLE DB.NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符
Access数据库要求“?”以防万一,什么也没做。错误仍然存在,谢谢。似乎缺少一个括号,它在哪里关闭,将尝试一下,干杯。现在我得到。。。用户代码未处理ArgumentException。。。OleDbParameter已包含在另一个OleDbParameterCollection中。
当CommandType设置为Text时,OLE DB.NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符