本帖最后由 phonlee 于 2009-07-11 22:01:52 编辑

解决方案 »

  1.   

    SqlParameter[] paras ={
        new SqlParameter("@Id",SqlDbType.Int),
        new SqlParameter("@Name",SqlDbType.NVarChar,200)
       };
       paras[0].Value = Id;
       paras[1].Value = NAME;
    看看数据库操作类中存储过程中使用方法
      

  2.   

         string cmdText = "INSERT INTO Grinddata " +                             "(RollNo,...," +
                                 "...,Maxcrack,MaxcrackLocation,Maxcrackangle," +
                                 "Maxbruise,MaxbruiseLocation,Maxbruiseangle," +
                                 ...)" +                             "values (@RollNo,...," +
                                 "...,@Maxcrack,@MaxcrackLocation,@Maxcrackangle," +
                                 "@Maxbruise,@MaxbruiseLocation,@Maxbruiseangle,"+                                    "...)";--------------------
        我的sql语句在 C# 代码中,不是存储过程
      

  3.   

    SqlParameter paraMaxcrackLocation = new SqlParameter("@MaxcrackLocation", SqlDbType.VarChar, 10);
                paraMaxcrackLocation.Value = DBNull.Value;
                int iTest = 0;
                if (m_GrinderMonitor1.m_drDetailCrackData != null)
                {
                  iTest = Convert.ToInt32(m_GrinderMonitor1.m_drDetailCrackData["zby"].ToString());
                  paraMaxcrackLocation.Value = iTest; 
    //.ToString();//m_GrinderMonitor1.m_drDetailCrackData["zby"];
                  //2个方法都尝试了.还是不正确
                } 是否参数和数据类型不匹配?   iTest是int啊.参数是SqlDbType.VarChar
    另外 如果是在循环中是否调用cmd.Parameters.Clear()
    值 debug不对,确定 cmdText里参数的顺序匹配?
      

  4.   


    SqlParameter paraMaxcrackLocation = new SqlParameter("@MaxcrackLocation", SqlDbType.VarChar, 10); 
                paraMaxcrackLocation.Value = DBNull.Value; 
                int iTest = 0; 
                if (m_GrinderMonitor1.m_drDetailCrackData != null) 
                { 
                  iTest = Convert.ToInt32(m_GrinderMonitor1.m_drDetailCrackData["zby"].ToString()); 
                  paraMaxcrackLocation.Value = iTest;  
    //.ToString();//m_GrinderMonitor1.m_drDetailCrackData["zby"]; 
                  //2个方法都尝试了.还是不正确 
                } 
                cmd.Parameters.Add(paraMaxcrackLocation); 你的参数类型是Varchar(10),但是你赋的值是int(int iTest ),这样可能会出现一些问题。
    另外,建议你输出iTest和m_GrinderMonitor1.m_drDetailCrackData的值出来看看,他们很可能为空值。
      

  5.   

          感谢各位的回复!
     
          我使用了format语句来生成sql
          这样方便调试.