string strUptsql = "insert into [T_loan_replace] ([manage_depart_no],[Lenders_name],[License],[owner],[owner_id_card],[owner_address],[loan_je],[usefulness],[loan_date],[return_date],[replace_date],[replace_je],[duty_man1],[duty_man2]) values (@manage_depart_no,@Lenders_name,@License,@owner,@owner_id_card,@owner_address,@loan_je,@usefulness,@loan_date,@return_date,@replace_date,@replace_je,@duty_man1,@duty_man2)";
        
        string conn = ConfigurationManager.ConnectionStrings["zzrcb_loan_data_str"].ConnectionString;
        SqlConnection Connection = new SqlConnection(conn);
        SqlCommand cmd = new SqlCommand(strUptsql, Connection);
       
        cmd.Parameters.Add("@[manage_depart_no", SqlDbType.Char, 22);
        cmd.Parameters["@[manage_depart_no"].Value = Lab_manage_depart_no.Text.Trim();        cmd.Parameters.Add("@Lenders_name", SqlDbType.NVarChar,120);
        cmd.Parameters["@Lenders_name"].Value = Text_Lenders_name.Text.Trim();        cmd.Parameters.Add("@License", SqlDbType.NVarChar, 50);
        cmd.Parameters["@License"].Value = Text_License.Text.Trim();        cmd.Parameters.Add("@owner", SqlDbType.NVarChar, 50);
        cmd.Parameters["@owner"].Value = Text_owner.Text.Trim();        cmd.Parameters.Add("@owner_id_card", SqlDbType.Char, 18);
        cmd.Parameters["@owner_id_card"].Value = Text_owner_id_card.Text;        cmd.Parameters.Add("@owner_address",SqlDbType.NVarChar,120);
        cmd.Parameters["@owner_address"].Value = Text_owner_address.Text.Trim();        cmd.Parameters.Add("@loan_je", SqlDbType.Money);
        cmd.Parameters["@loan_je"].Value = Decimal.Parse(text_loan_je.text);        cmd.Parameters.Add("@usefulness", SqlDbType.NVarChar,120);
        cmd.Parameters["@usefulness"].Value = Text_usefulness.Text.Trim();        cmd.Parameters.Add("@loan_date", SqlDbType.DateTime);
        cmd.Parameters["@loan_date"].Value = DateTime.Parse(text_loan_date.Text);        cmd.Parameters.Add("@return_date", SqlDbType.DateTime);
        cmd.Parameters["@return_date"].Value = DateTime.Parse(text_return_date.Text);        cmd.Parameters.Add("@replace_date", SqlDbType.DateTime);
        cmd.Parameters["@replace_date"].Value = DateTime.Parse(text_replace_date.Text);        cmd.Parameters.Add("@replace_je", SqlDbType.Money);
        cmd.Parameters["@replace_je"].Value = Decimal.Parse(text_replace_je.text);        cmd.Parameters.Add("@duty_man1", SqlDbType.NVarChar, 20);
        cmd.Parameters["@duty_man1"].Value = Text_duty_man1.Text.Trim();        cmd.Parameters.Add("@duty_man2", SqlDbType.NVarChar, 20);
        cmd.Parameters["@duty_man2"].Value = Text_duty_man2.Text.Trim();
        Connection.Open();
        cmd.ExecuteNonQuery();
        Connection.Close();执行到 cmd.ExecuteNonQuery();这句时出错,提示
以 'manage_depart_no char(22),@Lenders_name nvarchar(120),@License nvarchar(50),@owner nvarchar(50),@owner_id_card char(18),@owner_a' 开头的 标识符 太长。最大长度为 128。
',' 附近有语法错误。
不知道是不是commandtext只能限制在128个字符内,如果是这样,有什么可代替的方法?

解决方案 »

  1.   

    cmd.Parameters.Add("@owner_address",SqlDbType.NVarChar,120);
      cmd.Parameters["@owner_address"].Value = Text_owner_address.Text.Trim();改成
    cmd.Parameters.Add("@owner_address",SqlDbType.NVarChar,255);
      cmd.Parameters["@owner_address"].Value = Text_owner_address.Text.Trim();
    试试
    最简单的方法是这样写cmd.Parameters.AddWithValue("@owner_address",Text_owner_address.Text.Trim());
    只一行就可以了
      

  2.   

    另外cmd.Parameters.Add("@[manage_depart_no", SqlDbType.Char, 22);
    这个里面多了个[
      

  3.   

    cmd.Parameters.Add("@[manage_depart_no", SqlDbType.Char, 22);这里有一个错误!! @[manage_depart_no
      

  4.   

    cmd.Parameters.Add("@[manage_depart_no", SqlDbType.Char, 22);
      cmd.Parameters["@[manage_depart_no"].Value = Lab_manage_depart_no.Text.Trim();
    晕,问题出在这2句,没想到多一个 [ 会出现这种问题,被出错信息严重误导了,一直没注意到是这个细节,谢谢了