c#数据库写入错误

2024-12-23 14:35:22
推荐回答(2个)
回答1:

报错因为你拼的SQL语句语法不对, 引号没有成对出现。

1、重新拼接SQL语句,

string sql =" insert into ....  VALUES  ( '"+lb.Text+"' , '"+lb2.Text+"' , '" +lb3.Text +"' );

拼接时一定是  "  ' " + 变量+" '  "这样出现的。 虽然int类型在sql语句中可以不用引号,但是从C#中拼接还是统一都带上单引号为好,是不会报错的。

2、使用Parameter来传递参数。

拼接SQL会有很多问题,而且看起来很不美观。

最常见的会有SQL注入漏洞,比如查询的时候用户输入个  "0 or  1=1", 拼到你的SQL语句里面就是"select * from Table where  ID =  0 or 1=1 ;  这样会把所有的信息都查出来,很不安全。

用sqlParameter则可以避免此类问题:

string sql = "insert into table (Name,Age) Values (@Name,@Age);

var paras = new SqlParameter[]

{

    new SqlParameter("@Name", lb1.Text),

    new SqlParameter("@Age", lb2.Text),

}

cmd.ExcuteNonQuery(conn,type.Text ,sql,paras);   

//这个是执行的函数,可以自己封装,里面有很多重载。传递的就是连接字符串、sql类型、

//语句、变量等

程序会自动把语句中的@Name @Age当做变量,把你写的paras 这个参数组里的值传进去。 

回答2:

sql拼接有误,'1,'1,1,少了个'.
应该是'1','1'