mycom.Parameters.Add("@Companyid",System.Convert.ToInt32(L_compnay.Text.Trim()));//int型
mycom.Parameters.Add("@Invest_adress",T_Invest_adress.Text.ToString().Trim());
mycom.Parameters.Add("@YcheckDate",System.Convert.ToDatetime(T_ycheckDate.Text.Trim()));//datetime型
mycom.Parameters.Add("@ServerDate",T_ServerDate.Text.Trim());//datetime型
提交后提示:将VARCHAR转换为int时出错
另外下面的时间转换时也出错
要怎样解决?????试了很多方法也不行,急啊!

解决方案 »

  1.   

    类型不声明当然要报错

    mycom.Parameters.Add("@Companyid", SqlDataType.Int32);
    mycom.Parameters["@Companyid"].Value = System.Convert.ToInt32(L_compnay.Text.Trim());
    mycom.Parameters.Add("@Invest_adress", SqlDataType.VarChar);
    mycom.Parameters["@Invest_adress"].Value = T_Invest_adress.Text.ToString().Trim();
    mycom.Parameters.Add("@YcheckDate", SqlDataType.DateTime);
    mycom.Parameters["@YcheckDate"].Value = System.Convert.ToDatetime(T_ycheckDate.Text.Trim());如果是 2.0,可以使用 AddWithValue() 方法,这样可以不用声明类型。
      

  2.   

    还是在报错,是不是还要using一下那个单元
      

  3.   

    不好意思
    SqlDataType写错了
    是SqlDbType
      

  4.   

    string mstr="exec update_insert_Foreign_server @iinsertoreditid,@Companyid,@Invest_adress,@YcheckDate,@ServerDate,@IsLodge,@Major_content,@Isdiversion,@SubconPart,@ReferPoblem";
    mstr+=" ,@ReferDepartment,@ResultStatus,@IsTransact,@TranDate,@IsOk,@Re";
    SqlCommand mycom=new SqlCommand(mstr,gxlcon);
    mycom.Parameters.Add("@iinsertoreditid",Request.QueryString["ID"].ToString().Trim());
    mycom.Parameters.Add("@Companyid",SqlDbType.Int);
    mycom.Parameters["@Companyid"].Value = System.Convert.ToInt32(L_compnay.Text.Trim());
    mycom.Parameters.Add("@Invest_adress",T_Invest_adress.Text.ToString().Trim());
                mycom.Parameters.Add("@YcheckDate",SqlDbType.DateTime);
    mycom.Parameters["@YcheckDate"].Value = System.Convert.ToDateTime(T_ycheckDate.Text.Trim());
    mycom.Parameters.Add("@ServerDate",SqlDbType.DateTime);
    mycom.Parameters["@ServerDate"].Value = System.Convert.ToDateTime(T_ServerDate.Text.Trim());
    if (RB_ts0.Checked)
    {
    mycom.Parameters.Add("@IsLodge","1");
    }
    else
    {
                    mycom.Parameters.Add("@IsLodge","0");
    }
    mycom.Parameters.Add("@Major_content",T_Major_content.Text.Trim());
    if (RB1_zb.Checked)
    {
    mycom.Parameters.Add("@Isdiversion","1");
    }
    else
    {
        mycom.Parameters.Add("@Isdiversion","0");
    }
    mycom.Parameters.Add("@SubconPart",T_SubconPart.Text.Trim());
    mycom.Parameters.Add("@ReferPoblem",T_ReferPoblem.Text.Trim());
    mycom.Parameters.Add("@ReferDepartment",T_ReferDepartment.Text.Trim());
    mycom.Parameters.Add("@ResultStatus",T_ResultStatus.Text.Trim());
    if (R_bj0.Checked)
    {
    mycom.Parameters.Add("@IsTransact","1");
    }
    else
    {
                    mycom.Parameters.Add("@IsTransact","0");
    }
    mycom.Parameters.Add("@TranDate",SqlDbType.DateTime);
    mycom.Parameters["@TranDate"].Value=System.Convert.ToDateTime(T_TranDate.Text.Trim());
    if (RB_Ok0.Checked)
    {
    mycom.Parameters.Add("@IsOk","1");
    }
    else
    {
        mycom.Parameters.Add("@IsOk","0");
    }
    mycom.Parameters.Add("@Re",T_Re.Text.Trim());
    mycom.Connection.Open();
    mycom.ExecuteNonQuery();
    mycom.Connection.Close(); 
    }
    编译过了,但还是提示:将数据类型 nvarchar 转换为 int 时出错。高手请帮我检查一下是哪不对??
      

  5.   

    你下面几个参数怎么还是按老方法???全部都要改成我给你的那样
    都要确定类型先
    然后设置Value
    或者就是 AddWithValue()
      

  6.   

    我全换了还是转换出错,受不了了??
    string mstr="exec update_insert_Foreign_server @iinsertoreditid,@Companyid,@Invest_adress,@YcheckDate,@ServerDate,@IsLodge,@Major_content,@Isdiversion,@SubconPart,@ReferPoblem";
    mstr+=" ,@ReferDepartment,@ResultStatus,@IsTransact,@TranDate,@IsOk,@Re";
    SqlCommand mycom=new SqlCommand(mstr,gxlcon);
    mycom.Parameters.Add("@iinsertoreditid",SqlDbType.Int);
    mycom.Parameters["@iinsertoreditid"].Value=System.Convert.ToInt32(Request.QueryString["ID"].Trim());
    mycom.Parameters.Add("@Companyid",SqlDbType.Int);
    mycom.Parameters["@Companyid"].Value = System.Convert.ToInt32(L_compnay.Text.Trim());
    mycom.Parameters.Add("@Invest_adress",T_Invest_adress.Text.ToString().Trim());
                mycom.Parameters.Add("@YcheckDate",SqlDbType.DateTime);
    mycom.Parameters["@YcheckDate"].Value = System.Convert.ToDateTime(T_ycheckDate.Text.Trim());
    mycom.Parameters.Add("@ServerDate",SqlDbType.DateTime);
    mycom.Parameters["@ServerDate"].Value = System.Convert.ToDateTime(T_ServerDate.Text.Trim());
    if (RB_ts0.Checked)
    {
                    mycom.Parameters.Add("@IsLodge",SqlDbType.Int);
    mycom.Parameters["@IsLodge"].Value=System.Convert.ToInt32("1");
    }
    else
    {
     mycom.Parameters.Add("@IsLodge",SqlDbType.Int);
                    mycom.Parameters["@IsLodge"].Value=System.Convert.ToInt32("0");
    }
    mycom.Parameters.Add("@Major_content",SqlDbType.NChar);
    mycom.Parameters["@Major_content"].Value=System.Convert.ToChar(T_Major_content.Text.Trim());
    if (RB1_zb.Checked)
    {
                   mycom.Parameters.Add("@Isdiversion",SqlDbType.Int);
    mycom.Parameters["@Isdiversion"].Value=System.Convert.ToInt32("1");
    }
    else
    {
    mycom.Parameters.Add("@Isdiversion",SqlDbType.Int);
    mycom.Parameters["@Isdiversion"].Value=System.Convert.ToInt32("0");
    }
    mycom.Parameters.Add("@SubconPart",SqlDbType.NChar);
    mycom.Parameters["@SubconPart"].Value=System.Convert.ToChar(T_SubconPart.Text.Trim());
                mycom.Parameters.Add("@ReferPoblem",SqlDbType.NChar);
    mycom.Parameters["@ReferPoblem"].Value=System.Convert.ToChar(T_ReferPoblem.Text.Trim());
     mycom.Parameters.Add("@ReferDepartment",SqlDbType.NChar);
    mycom.Parameters["@ReferDepartment"].Value=System.Convert.ToChar(T_ReferDepartment.Text.Trim());
     mycom.Parameters.Add("@ResultStatus",SqlDbType.NChar);
    mycom.Parameters["@ResultStatus"].Value=System.Convert.ToChar(T_ResultStatus.Text.Trim());
    if (R_bj0.Checked)
    {
                   mycom.Parameters.Add("@IsTransact",SqlDbType.Int);
    mycom.Parameters["@IsTransact"].Value=System.Convert.ToInt32("1");
    }
    else
    {
    mycom.Parameters.Add("@IsTransact",SqlDbType.Int);
    mycom.Parameters["@IsTransact"].Value=System.Convert.ToInt32("0");
    }

    mycom.Parameters.Add("@TranDate",SqlDbType.DateTime);
    mycom.Parameters["@TranDate"].Value=System.Convert.ToDateTime(T_TranDate.Text.Trim());
    if (RB_Ok0.Checked)
    {
    mycom.Parameters.Add("@IsOk",SqlDbType.Int);
    mycom.Parameters["@IsOk"].Value=System.Convert.ToInt32("1");
    }
    else
    {
    mycom.Parameters.Add("@IsOk",SqlDbType.Int);
    mycom.Parameters["@IsOk"].Value=System.Convert.ToInt32("0");
    }
    mycom.Parameters.Add("@Re",SqlDbType.NVarChar);
    mycom.Parameters["@Re"].Value=System.Convert.ToChar(T_Re.Text.Trim());
    mycom.Connection.Open();
    mycom.ExecuteNonQuery();
    mycom.Connection.Close(); 
    }
    还在出错!!!!
      

  7.   

    数据库表中的类型是不是和外面的匹配?
    时间传入的时候不能为空,.net和sql 的时间范围不一样,存储的日期范围是从1753 年1 月1 日开始,到9999 年12 月31 日结束
      

  8.   

    System.Convert.ToInt32(L_compnay.Text.Trim())---〉L_compnay.Text.Trim()为空也会错吧?
      

  9.   

    L_compnay.Text.Trim()不会为空,我怀疑是不是我的系统有问题
      

  10.   

    你最后可以把sql语句在查询分析器运行一下 看看对不!如果不正确就是你sql有问题!不是转换的问题!如果没有问题就是你转换的问题了!设断点好好查一下!
      

  11.   

    设断点不起作用,永远就是mycom.ExecuteNonQuery();这个位置,所以没法跟踪每一句的值
      

  12.   

    谢谢各位,真是我系统有点问题,我重新恢复一下系统以后,按 vengair()的方法就成功了.