尝试执行代码时收到错误消息

use*_*745 1 c# sql sqlcommand

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)

我尝试执行此代码时收到以下错误消息:

列名或提供的值数与表定义不匹配.

任何人都可以帮我找到错误吗?

Son*_*nül 5

听起来就像你的表中的列号而且你的列号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)