解决方案 »

  1.   

    附上代码: ArrayList sQLs = new ArrayList();
                        ArrayList sqlParams = new ArrayList();
                        DBClass class3 = new DBClass("ConnStr");
                        string[] userInfo = class2.GetUserInfo();
                        string str = "update FixFactory  set SendDate=@SendDate,UnitName=@UnitName,UnitAddress=@UnitAddress,UnitDate=@UnitDate,Artificial=@Artificial,Principal=@Principal,TaxRegNo=@TaxRegNo,Manager=@Manager,PrincipalEmail=@PrincipalEmail,PrincipalMobile=@PrincipalMobile,PostCode=@PostCode,email=@Email,Summary=@Summary,Fax=@Fax,AcceptNo=@AcceptNo,Phone=@Phone,TaxArea=@TaxArea,Area=@Area,EconomyTypeName=@EconomyTypeName,TaxTypeName=@TaxTypeName,UnitType=@UnitType,WorkTypeName=@WorkTypeName,WorkRange=@WorkRange,Popedom=@Popedom,WorkType=@WorkType ,LicenceNo=@LicenceNo,ModifyDate=@ModifyDate,ModifyPersonName=@ModifyPersonName,ModifyOrgan=@ModifyOrgan,LawNo=@LawNo where FixFactory =@FixFactory";
                        SqlParameter[] parameterArray = new SqlParameter[] { 
                            new SqlParameter("@UnitName", SqlDbType.VarChar, 100), new SqlParameter("@FixFactory", SqlDbType.Float), new SqlParameter("@UnitType", SqlDbType.VarChar, 20), new SqlParameter("@WorkType", SqlDbType.Float), new SqlParameter("@WorkTypeName", SqlDbType.VarChar, 100), new SqlParameter("@WorkRange", SqlDbType.VarChar, 0xff), new SqlParameter("@Artificial", SqlDbType.VarChar, 20), new SqlParameter("@Principal", SqlDbType.VarChar, 20), new SqlParameter("@UnitAddress", SqlDbType.VarChar, 100), new SqlParameter("@PrincipalMobile", SqlDbType.VarChar, 20), new SqlParameter("@Phone", SqlDbType.VarChar, 50), new SqlParameter("@UnitDate", SqlDbType.DateTime), new SqlParameter("@PostCode", SqlDbType.VarChar, 10), new SqlParameter("@Fax", SqlDbType.VarChar, 50), new SqlParameter("@Email", SqlDbType.VarChar, 50), new SqlParameter("@Area", SqlDbType.VarChar, 50), 
                            new SqlParameter("@Manager", SqlDbType.VarChar, 50), new SqlParameter("@SendDate", SqlDbType.DateTime), new SqlParameter("@Summary", SqlDbType.VarChar, 0xff), new SqlParameter("@EconomyTypeName", SqlDbType.VarChar, 100), new SqlParameter("@TaxTypeName", SqlDbType.VarChar, 100), new SqlParameter("@TaxRegNo", SqlDbType.VarChar, 20), new SqlParameter("@TaxArea", SqlDbType.VarChar, 20), new SqlParameter("@Popedom", SqlDbType.VarChar, 50), new SqlParameter("@EconomyType", SqlDbType.Float), new SqlParameter("@PrincipalEmail", SqlDbType.VarChar, 80), new SqlParameter("@AcceptNo", SqlDbType.VarChar, 20), new SqlParameter("@LicenceNo", SqlDbType.VarChar, 20), new SqlParameter("@ModifyDate", SqlDbType.DateTime), new SqlParameter("@ModifyPersonName", SqlDbType.VarChar, 50), new SqlParameter("@ModifyOrgan", SqlDbType.Float), new SqlParameter("@LawNo", SqlDbType.VarChar, 20)
                         };
                        string str2 = this.returnItemName();
                        parameterArray[0].Value = this.TextBox10.Text.Trim();
                        parameterArray[1].Value = this.ViewState["FixFactory"].ToString();
                        parameterArray[2].Value = this.DropDownList5.SelectedItem.Text.Trim();
                        parameterArray[3].Value = this.ViewState["WorkType"].ToString();
                        parameterArray[4].Value = "";
                        parameterArray[5].Value = "";
                        parameterArray[6].Value = this.TextBox11.Text.Trim();
                        parameterArray[7].Value = this.TextBox4.Text.Trim();
                        parameterArray[8].Value = this.TextBox8.Text.Trim();
                        parameterArray[9].Value = this.TextBox15.Text.Trim();
                        parameterArray[10].Value = this.TextBox26.Text.Trim();
                        parameterArray[11].Value = this.TextBox9.Text.Trim();
                        parameterArray[12].Value = this.TextBox14.Text.Trim();
                        parameterArray[13].Value = this.TextBox23.Text.Trim();
                        parameterArray[14].Value = this.TextBox7.Text.Trim();
                        parameterArray[15].Value = "青岛市";
                        parameterArray[0x10].Value = this.TextBox6.Text.Trim();
                        parameterArray[0x11].Value = this.TextBox1.Text.Trim();
                        parameterArray[0x12].Value = str2;
                        parameterArray[0x13].Value = this.DropDownList6.SelectedItem.Text.Trim();
                        if (this.DropDownList9.SelectedValue.Trim() == "none")
                        {
                            parameterArray[20].Value = DBNull.Value;
                        }
                        else
                        {
                            parameterArray[20].Value = this.DropDownList9.SelectedItem.Text.Trim();
                        }
                        parameterArray[0x15].Value = this.TextBox12.Text.Trim();
                        if (this.DropDownList7.SelectedValue.Trim() == "none")
                        {
                            parameterArray[0x16].Value = DBNull.Value;
                        }
                        else
                        {
                            parameterArray[0x16].Value = this.DropDownList7.SelectedItem.Text.Trim();
                        }
                        parameterArray[0x17].Value = this.DropDownList2.SelectedItem.Text.Trim();
                        parameterArray[0x18].Value = this.DropDownList6.SelectedValue.Trim();
                        parameterArray[0x19].Value = this.TextBox13.Text.Trim();
                        parameterArray[0x1a].Value = this.TextBox25.Text.Trim();
                        parameterArray[0x1b].Value = this.TextBox27.Text.Trim();
                        parameterArray[0x1c].Value = DateTime.Now.ToString();
                        parameterArray[0x1d].Value = userInfo[0].ToString();
                        parameterArray[30].Value = userInfo[2].ToString();
                        parameterArray[0x1f].Value = class2.GetFacsNo(this.DropDownList2.SelectedValue, this.ViewState["FixFactory"].ToString());
                        sQLs.Add(str);
                        sqlParams.Add(parameterArray);
                        if (class3.ExecSQL(sQLs, sqlParams))
                        {
                            this.CloseAll();
                            class2.alert(this.Page, "变更成功");
                            this.Button2.Enabled = true;
                        }
                        else
                        {
                            class2.alert(this.Page, "变更失败");
                        }
      

  2.   

    应该上面的数据有问题,应该转为double
      

  3.   

    检查下那些SqlDbType.Float的参数,其中有一个被赋了不能转换为浮点数字的字符串。
      

  4.   

    你贴错代码了,应该把 class3.ExecSQL 这个里面的 代码贴出来
      

  5.   

    ("@FixFactory", SqlDbType.Float),这里你写入的都是.ToString
      

  6.   

    入库的数据类型与数据字段类型要对应上,不然就出错了,可用convert来转换
      

  7.   

    在给参数赋值时,转换类型。
    比如: parameterArray[0] = double.Parse("0.1");
      

  8.   

    你贴错代码了,应该把 class3.ExecSQL 这个里面的 代码贴出来 public bool ExecSQL(ArrayList SQLs, ArrayList sqlParams);
     public bool ExecSQL(string SQL, SqlParameter[] sqlParams);
      

  9.   

    你定义了一个double 类型的parameter,但你付的值是string 类型,你检查那个parameter 是double类型,并给其付值的时候用 double.parse()
      

  10.   

    没有double类型的参数,有的就是float型的参数。
      

  11.   


    parameterArray[1].Value=this.ViewState["FixFactory"].toString();======>parameterArray[1].Value = Convert.ToDouble(this.ViewState["FixFactory"]);
    改成这样吗?
      

  12.   


    parameterArray[1].Value=this.ViewState["FixFactory"].toString();======>parameterArray[1].Value = Convert.ToDouble(this.ViewState["FixFactory"]);
    改成这样吗?
    是的,你试一下,都要对应上
      

  13.   


    parameterArray[1].Value=this.ViewState["FixFactory"].toString();======>parameterArray[1].Value = Convert.ToDouble(this.ViewState["FixFactory"]);
    改成这样吗?
    是的,你试一下,都要对应上还是不对,还是刚才的错误提示。
      

  14.   

    如果我没看错  那就是你的第11 17 28个参数都是datetime类型的  可是你赋值的时候却给的是控件的text属性
    那是string类型的默认  需要你强制转换 或者 更慎重的取值
      

  15.   

    强制转换成datetime吗?怎么弄?求指导!
      

  16.   

    你的textbox取出来的值 是不是一定会规范
    需不需要用正则
    建议你直接用时间控件取值
    否则需要校验的  强制转换的话 convert.toDateTime(textbox取出来的值)
    很简单  
      

  17.   

    为什么其他的按钮也是一样复制,却没有这个问题呢?我没法修改这个程序,只能修改下bug,否则会被上头说的。
      

  18.   

    具体情况我无法知道  但是从你贴出来的代码来看  就是一般的数据转换问题  
    理由很简单  你上面的SqlParameter里面 索引10 16 27 这三个都是datetime类型的对不对
    而下面紧接着对他赋值的时候  你给的都是 控件.text。trim()这样解决的  很显然 没有对准数据类型
    具体问题具体分析 不行你就跟踪调试一下  看看到底数据是什么样的  
      

  19.   


    首先确认数据库表的哪个字段是浮点型。
    然后在项目中定义DataModel的时候,把对应的字段定义成double;
    赋值的时候确认值是数字;
    确定sql语句的字段先后顺序
    sql语句不缺少字段;

      

  20.   


    我将text格式转换成了parameterArray[11].Value = Convert.ToDateTime(this.TextBox9.Text.Trim());
    这样的,但是还是不对。
      

  21.   

    是不是没有考虑你的TextBox是空的情况,看你代码貌似没有过滤空的情况
      

  22.   

    感觉这个不用上代码了,多半就是因为你创建的 SqlParameter 对象的参数值的类型和数据库定义的不一样,不吻合。