ASP.NET页面插入数据库时出错

提示:TherearemorecolumnsintheINSERTstatementthanvaluesspecifiedintheVALUESclause.Thenum... 提示:There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
代码段:

string sql1 = "insert into StudentInfo(Id, name, gender, class, address, nation, politics, profession, link, addressId, more ) ";
string sql2 = "VALUES ('"+ ID.Text.Trim()+"','"+name.Text.Trim()+"','"+gender.Text.Trim()+"','"+tclass.Text.Trim()+','+address.Text.Trim()+"','"+nation.Text.Trim()+"','"+politics.Text.Trim()+"','"+profession.Text.Trim()+"','"+link.Text.Trim()+"','"+addressID.Text.Trim()+"','"+more.Text.Trim() + "')";
string sql = sql1 + sql2;
SqlCommand cmd = new SqlCommand(sql, conn);
message.Text = Convert.ToString(cmd.ExecuteNonQuery());
我的字段明明和values一样多的呀~求救啊
展开
 我来答
Andy_Sun321
推荐于2016-12-01 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:731万
展开全部

那么你输出的SQL语句内容是什么呢?

最好不要使用这种将用户的输入直接拼接成SQL语句的方法,这样很容易被别人利用拼接SQL实现SQL注入的。应该使用参数化的查询SQL, 在执行时再将用户的输入值作为参数值传入, 就是使用SqlCommand.Parameters来传入参数, 示例:

SqlCommand cmd = new SqlCommand('', conn);
cmd.CommandText = @"insert into StudentInfo (Id,name, gender, class, address, nation, politics, profession, link, addressId, more)
values (@Id,@name, @gender, @class, @address, @nation, @politics, @profession, @link, @addressId, @more)";
cmd.Parameters.Add(@Id", SqlDbType.NVarChar, 100);
cmd.Parameters[0].Value = ID.Text.Trim(); 
// ...逐个添加参数 
cmd.ExecuteNonQuery();    // 执行SQL语句
琳大小姐624
2014-11-16 · TA获得超过138个赞
知道答主
回答量:146
采纳率:50%
帮助的人:69.1万
展开全部
这样可以直接在数据库中获取时间了,没有必要在页面中获取时间,然后再传到数据库,在数据库中获取时间的方法为getdate(),如果你要在页面中获取的话,就是DateTime.Now.ToString()这样的形式了,不过从做软件的角度来说还是应该在数据库中处理这样的问题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式