开发环境Visual Studio 2005,数据库access2003。小弟我用delete语句删除一条记录,可总是报错,说SQL语句语法错误。请大家帮我看看哪里的的语法出错,谢谢!     //conn 是连接数据库的OleDbConnection对象,我用select是没有问题的。
     int Pno = 602;
     string sql="Delete FROM patient WHERE PatientNo="+Pno;//PatientNo字段类型是自动编号
     OleDbCommand Acmd = new OleDbCommand("sql", conn);
     Acmd.ExecuteNonQuery();

解决方案 »

  1.   

    在你的delete语句处加个断点看看你编译后的sql语句错没
      

  2.   

    string sql=String.Format("Delete FROM patient WHERE PatientNo={0}",Pno);
    换成这样试下看行不行。
      

  3.   

     断点加号以后直接在数据库里面执行你生成的sql语句,看看对不对。
      

  4.   

    PatientNo是字符串类型的要加引号的
      

  5.   

     改成试试
     string sql="Delete FROM patient WHERE PatientNo='"+Pno+"'";
      

  6.   

    没有用过access,但是sqlserver是下面这样的
    string sql="Delete FROM patient WHERE PatientNo= '"+Pno+"'";//PatientNo字段类型是自动编号
      

  7.   

    我把SQL语句改成这样:string sql="Delete FROM patient WHERE PatientNo=Pno";
    直接在数据库执行是没有问题,但运行程序的时候,还是在这句:Acmd.ExecuteNonQuery(); 
    报错:无效的SQL语句!
      

  8.   

    string sql="Delete FROM patient WHERE PatientNo= '"+Pno+"'";
    我早就试过了,还是一样的错误。。
      

  9.   

     OleDbCommand Acmd = new OleDbCommand("sql", conn);
     改为OleDbCommand Acmd = new OleDbCommand(sql, conn);
     sql 不用“”号