错误:
System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理
附加信息:列名或提供的值数与表定义不匹配。
代码:
SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\Harry\Documents\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf; Integrated Security = True";
con.Open();
// insert command
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText="INSERT INTO firsttb VALUES ( @n , @p ) ";
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("@n",TextBox1.Text);
cmd.Parameters.AddWithValue("@p", TextBox2.Text);
cmd.ExecuteNonQuery();
con.Close();
答案 0 :(得分:0)
明确提到列名,如下所示;假设列名称为n
和p
。另外,使用Add()
方法的重载而不是AddWithValue()
cmd.CommandText="INSERT INTO firsttb(n, p) VALUES ( @n , @p )";
答案 1 :(得分:0)
检查firsttb表中的列数。它应与您通过ado.net代码传递的许多值相匹配。
E.g如果你的firsttb表有三列,那么在Insert Into语句中传递三个值。
此外,请检查您传递的值的顺序。正如您在Insert Into Statement中没有提到列名。因此,您传递的值的顺序非常重要。
试试这个:因为你的表有3列,你只传递两个值,在这种情况下,将你的Id列作为标识列,这样每次你插入一个新记录时,新的id将自动生成,你不要#39; t必须修改代码。
// Identity Column
CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
Username varchar(255) NOT NULL,
Password varchar(255) NOT NULL
);