不知道错误在哪,就是数据库的值没有变,但是单独在access运行sql语句没有问题

解决方案 »

  1.   

    那你设一个断点看看,
    要是数据库的值没有变.
    且你的SQL语句执行没有错.
    那就是你程序的错.
    看看程序中的字段和SQL语句中的字段一样不一样.
    设断点看在哪报错.
      

  2.   

    dbObj.RunStatement(queryString,   parameters);//run   query
    此方法的代码贴出来看!
      

  3.   

        public class JetOle
        {
            protected OleDbConnection Connection;        public JetOle(string dbConnectionString);        protected string ConnectionString { get; }        public int RunStatement(string queryString, IDataParameter[] parameters);
            public DataSet RunStatement(string queryString, IDataParameter[] parameters, string tableName);
            public void RunStatement(string queryString, IDataParameter[] parameters, DataSet dataSet, string tableName);
        }
      

  4.   

    我又重新写了一下,可是数据库值还是没有改到。debug也没报错,在access单独运行sql语句也没问题,怎么放c#里就不行?请教个位问题在哪?  
          private void UpdateChecklistQty(int auditId, int Dept_Id, string Dsrc)
            {
                string CString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\sunyi\Desktop\v1.0.0.9\PreOpeningAuditClient\bin\Debug\IHG_WindowsApp.mdb";            OleDbConnection connect = new OleDbConnection(CString);
                OleDbCommand cmd1 = new OleDbCommand("update TBL_PRE_AUDITDEPT set QTY_TO_INSPECT=QTY_TO_INSPECT-1 where AUDIT_ID=@AuditID and DEPT_ID=@DeptID and DEPT_SRC=@DeptSrc", connect);
                cmd1.Parameters.Add("@DeptID", OleDbType.VarChar).Value = Dept_Id;
                cmd1.Parameters.Add("@AuditID", OleDbType.VarChar).Value = auditId;
                cmd1.Parameters.Add("@DeptSrc", OleDbType.VarChar).Value = Dsrc;
                       connect.Open();
                cmd1.ExecuteNonQuery();
                connect.Close();
                
            }
      

  5.   

    在执行前,设置断点检查int auditId, int Dept_Id, string Dsrc 三个参数的值是否正确还不行的情况下手工修改下列代码cmd1.Parameters.Add("@DeptID", OleDbType.VarChar).Value = Dept_Id; 
                cmd1.Parameters.Add("@AuditID", OleDbType.VarChar).Value = auditId; 
                cmd1.Parameters.Add("@DeptSrc", OleDbType.VarChar).Value = Dsrc; 
            改为固定值如:cmd1.Parameters.Add("@DeptID", OleDbType.VarChar).Value = 1; 
                cmd1.Parameters.Add("@AuditID", OleDbType.VarChar).Value = 2; 
                cmd1.Parameters.Add("@DeptSrc", OleDbType.VarChar).Value = 3; 
    再试试
      

  6.   

    我测试了所有数据,只有当Dept_Id=1
                         auditId=1
    的时候这短代码才好用,怎么回事啊string CString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=IHG_WindowsApp.mdb";            OleDbConnection connection = new OleDbConnection(CString);
                OleDbCommand cmd1 = new OleDbCommand("update TBL_PRE_AUDITDEPT set [QTY_TO_INSPECT]=QTY_TO_INSPECT-1 where [AUDIT_ID]=1 and [DEPT_ID]=@DID and [DEPT_SRC]=@DeptSrc", connection);
                cmd1.Parameters.Add("@DID", OleDbType.Integer).Value = Dept_Id;
                cmd1.Parameters.Add("@AuditID", OleDbType.Integer).Value = auditId;
                cmd1.Parameters.Add("@DeptSrc", OleDbType.VarChar).Value = Dsrc;
                connection.Open();
                cmd1.ExecuteNonQuery();
                connection.Close();
      

  7.   

    找到错误了,
                cmd1.Parameters.Add("@DID", OleDbType.Integer).Value = Dept_Id; 
                cmd1.Parameters.Add("@AuditID", OleDbType.Integer).Value = auditId; 
    这两行位置换一下就好了,晕死
      

  8.   

    那么麻烦干嘛?
    直接用值代进去不就可以了.
    string CString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\sunyi\Desktop\v1.0.0.9\PreOpeningAuditClient\bin\Debug\IHG_WindowsApp.mdb"; OleDbConnection connect = new OleDbConnection(CString); string sql="update   tbl_pre_auditdept   set   qty_to_inspect=qty_to_inspect-1   where   audit_id="+AuditID+" and  dept_id="+DeptID+"   and   dept_src='"+DeptSrc+"'";OleDbCommand cmd1 = new OleDbCommand(sql, connect); connection.Open(); 
    cmd1.ExecuteNonQuery(); 
    connection.Close();