con.Open();
string qry="insert into reg1 values ('"+txtname.Text+"','"+txtaddress.Text+"','"+txtpin.Text+"','"+txtage.Text+"','"+txtgender.Text+"','"+txtcourse.Text+"','"+txtcollege.Text+"','"+txtfname.Text+"','"+txtoccup.Text+"','"+txtmname.Text+"','"+txtskills.Text+"','"+txtmobile.Text+"','"+txtemail.Text+"')";
SqlCommand cmd = new SqlCommand(qry, con);
cmd.ExecuteNonQuery();
con.Close();
Run Code Online (Sandbox Code Playgroud)
我尝试执行此代码时收到以下错误消息:
列名或提供的值数与表定义不匹配.
任何人都可以帮我找到错误吗?
听起来就像你的表中的列号而且你的列号SqlCommand不匹配.但既然我们对你的桌子设计一无所知,我们永远不会知道......
如果您的INSERT命令和表没有相同的列号,则必须声明要插入这些值的列名.
我从您的评论中计算了您桌面上的14列,但您尝试添加13个值.这些都不匹配.
但更重要的是,你应该经常使用parameterized queries.这种字符串连接是开放的SQL Injection攻击.
con.Open();
string qry = @"insert into reg1
values(@name, @address, @pin, @age, @gender, @course, @college, @fname
@occup, @mname, @skills, @mobile, @email)";
SqlCommand cmd = new SqlCommand(qry, con);
cmd.Parameters.AddWithValue("@name", txtname.Text);
cmd.Parameters.AddWithValue("@address", txtaddress.Text);,
.....
cmd.ExecuteNonQuery();
con.Close();
Run Code Online (Sandbox Code Playgroud)