为什么tsql语句在C#中执行不了? 执行后报什模错误?

解决方案 »

  1.   

    cmd.CommandText="update [class] set [sn]='"+textBox1.Text +"',"+"[class]. 老大,这里的"+" 会被解释成字符串,去掉挖 
     调式时把sql语句打印出来 看看语句对不对? 放查询分析器在试试 .
      

  2.   

    你用SqlCommand.CommandText 看你的sqlcommand是否和你写的一致
      

  3.   

    如此
    cmd.CommandText="update [class] set [sn]="+'"+textBox1.Text +"'","
      

  4.   

    问题重点不在于cmd.CommandText="update [class] set [sn]='"+textBox1.Text +"',"+"[class].[class]='"+textBox2.Text+"' where [class].[sn]='"+t1+"' and [class].[class]='"+t2+"'";而是在于
    cmd.CommandText+=" IF EXISTS (SELECT * from [info] WHERE [info].[class]='"+t2+"'";
    cmd.CommandText+=" update [info] set [info].class='"+textBox2.Text+"' " +"where [info].[class]='"+t2+"'";  
    这部分
    前半句调试过无问题,问题是出在if exists以后
    不信你们可以用access数据库调试下.
    关键奇怪是的ole不能执行tsql语句????
    实在迷惑
      

  5.   

    我认为就算是查询分析器 where前面多一个+号,也是通不过的
      

  6.   

    第一句我用得是access数据库
    第二句是在sql数据库中测试
     是什么意思?一个Command对像不能对多外数据库连接吧!
      

  7.   

    我測試過了沒問題
      sqlCommand1.Connection=this.sqlConnection1;
    sqlConnection1.Open();
    sqlCommand1.CommandText="if exists(select * from emp where sysuser='ja')";
    sqlCommand1.CommandText+=" update emp set syspasswd='1' where sysuser='ja'";
    sqlCommand1.ExecuteNonQuery();
    sqlConnection1.Close();
    你把'"+ t1 +"'改成'" & t1 &"'看看.我以前碰到過這樣的問題.
      

  8.   

    我也遇到过类似问题,发现ole驱动对tsql的理解与access内制tsql解释器有区别,建议历史用别的sql语句实现你需要的功能
      

  9.   

    错了,access用的是jet 4.0 驱动,与tsql语法有区别
      

  10.   

    同意 lucidaxy() 
    操作对象不同
    不然 orcale(小三) 可把上面的语句用在access上试试