gpt4 book ai didi

c# - 如何修复 "System.Data.SqlClient.SqlException: ' 列名或提供值的数量与 asp.net 中的表定义 .'"不匹配

转载 作者:行者123 更新时间:2023-11-30 22:54:32 27 4
gpt4 key购买 nike

我正在尝试将我的 SQL Server 与 ASP.NET 连接,当我运行我的插入函数时,它显示错误。

SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Insert into Table1 values('"+firstname.Text+"','"+lastname.Text+"','"+city.Text+"')";
cmd.ExecuteNonQuery();

firstname.Text = "";
lastname.Text = "";
city.Text = "";

我希望显示插入的值,但它显示此错误:

System.Data.SqlClient.SqlException: 'Column name or number of supplied values does not match table definition.'

其中 Id 自动递增。

最佳答案

迫切需要研究 SQL 注入(inject),停止使用字符串连接来构建您的 SQL 插入语句现在

您需要使用正确的技术 - 参数化查询 - 总是 - 没有异常(exception)!

此外,在您的 INSERT 语句中列出列是普遍接受的最佳实践,以避免在表更改其列时出现问题(在此处阅读更多相关信息:Bad habits to kick: using SELECT * / omit the column list)。

使用此代码作为示例/模板:

string insertQuery = @"INSERT INTO dbo.Table1 (FirstName, LastName, City)
VALUES (@FirstName, @LastName, @City);";

using (SqlCommand cmd = new SqlCommmand(insertQuery, con))
{
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 50).Value = firstname.Text;
cmd.Parameters.Add("@LastName", SqlDbType.VarChar, 50).Value = lastname.Text;
cmd.Parameters.Add("@City", SqlDbType.VarChar, 50).Value = city.Text;

con.Open();
cmd.ExecuteNonQuery();
con.Close()
}

关于c# - 如何修复 "System.Data.SqlClient.SqlException: ' 列名或提供值的数量与 asp.net 中的表定义 .'"不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56197527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com