在winform中运行程序之后,程序调用SQL语句取上datagrid上的值做insert操作,总是提示“字符串之前有未闭合的引号“这个错误,我的SQL语句是:private const string SQL_INSERT_YWBSJ = "Execute('insert into' + ' '+ @TableName + ' ' + 'values' + '(' + ' '+ @lmz + ' ' + ')')";传的值都没问题,如果我在datagrid 输入的是单个字符也没事,还有就是我在SQL数据库的表中定义的列的长度也都很大,按说没有什么问题,总是提示“这个字符串之前有未闭合的引号”,请问大家如何解决呢?

解决方案 »

  1.   

    sp_executesql 执行可以多次重用或动态生成的 Transact-SQL 语句或批处理。
    你应该使用这个吧, Execute不能使用动态SQL的
      

  2.   

    private const string SQL_INSERT_YWBSJ = "Execute('insert into' + ' '+ @TableName + ' (???)' + 'values' + '(' + ' '+ @lmz + ' ' + ')')";
      

  3.   

    ('insert into ' + @TableName +  ' values ('''+ @lmz + ''')')
    这样试一下
      

  4.   

    我一般都不用那么多引号了,好容易出错误~~
    觉得用参数的方式,比一大串字符串好,而已还能防止sql 注入
      

  5.   

    原因我找到,是因为在写SQL语句的时候设置了变量的长度了,所以在取每一个Datagrid上的数据连在一起时,长度就会超过我设的变量的度了,因此就会出错.谢谢大家了.