C#操作本地数据库执行INSERT触发SqlException错误求助
错误排查与修复方案
错误原因
- SQL字符串拼接遗漏分隔符:你编写的INSERT语句字段部分,
id_or_passport和后续字段newusernames拼接时没有加逗号分隔,导致两个字段名被合并为异常提示里的无效列名id_or_passportnewusernames。 - 字段数与值数不匹配:上述拼接错误导致INSERT语句声明的插入字段只有6个,但VALUES子句中传入了7个参数,触发了字段数量和值数量不匹配的异常。
修复方法
修改SQL拼接部分的代码,在id_or_passport后补加逗号即可,修复后的代码片段如下:
SqlCommand insertcommand = new SqlCommand("insert into Users_Names (Names,Surname,Email, no_of_rooms,id_or_passport," + "newusernames, Newpassword) values(@name,@surname,@Mail,@NoOfRooms,@ID,@NewUsername,@Pword)");
额外优化建议
- 编写多行拼接的SQL语句时,建议每个字段末尾都带上逗号,换行拼接时更容易检查语法遗漏,降低同类错误出现概率。
- 不要直接明文存储用户密码到数据库,建议先做加盐哈希加密(比如BCrypt、SHA256加盐方案)后再存入,避免数据库泄露后用户密码直接暴露。
内容的提问来源于stack exchange,提问作者Minez
相关产品推荐
相关产品推荐

