C# SQL-无法将字符串转换为Int32 试试看 { conn.Open(); SqlCommand cmd=新的SqlCommand(sql,conn); SqlParameter[]pram=新的SqlParameter[7]; pram[0]=新的SqlParameter(“@fname”,SqlDbType.VarChar,50); pram[1]=新的SqlParameter(“@lname”,SqlDbType.VarChar,50); pram[2]=新的SqlParameter(“@dob”,SqlDbType.VarChar,50); pram[3]=新的SqlParameter(“@gender”,SqlDbType.Char,10); pram[4]=新的SqlParameter(“@fathername”,SqlDbType.VarChar,50); pram[5]=新的SqlParameter(“@contact”,SqlDbType.Int,100); pram[6]=新的SqlParameter(“@address”,SqlDbType.VarChar,50); pram[0]。值=fname; pram[1]。值=lname; 婴儿车[2]。数值=dob; 婴儿车[3]。价值=性别; 婴儿车[4]。数值=父亲姓名; pram[5]。值=触点; pram[6]。值=地址; 对于(int i=0;i

C# SQL-无法将字符串转换为Int32 试试看 { conn.Open(); SqlCommand cmd=新的SqlCommand(sql,conn); SqlParameter[]pram=新的SqlParameter[7]; pram[0]=新的SqlParameter(“@fname”,SqlDbType.VarChar,50); pram[1]=新的SqlParameter(“@lname”,SqlDbType.VarChar,50); pram[2]=新的SqlParameter(“@dob”,SqlDbType.VarChar,50); pram[3]=新的SqlParameter(“@gender”,SqlDbType.Char,10); pram[4]=新的SqlParameter(“@fathername”,SqlDbType.VarChar,50); pram[5]=新的SqlParameter(“@contact”,SqlDbType.Int,100); pram[6]=新的SqlParameter(“@address”,SqlDbType.VarChar,50); pram[0]。值=fname; pram[1]。值=lname; 婴儿车[2]。数值=dob; 婴儿车[3]。价值=性别; 婴儿车[4]。数值=父亲姓名; pram[5]。值=触点; pram[6]。值=地址; 对于(int i=0;i,c#,sql,C#,Sql,收到错误: 无法将参数值从字符串转换为Int32 您传递的值可能无法解析为此参数的int: try { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); SqlParameter[] pram = new SqlParameter[7]; pram[0] = new SqlParameter("@fname", SqlDbType.VarChar, 50); pram[1] = new Sql

收到错误:


无法将参数值从字符串转换为Int32


您传递的值可能无法解析为此参数的
int

try
{
    conn.Open();
    SqlCommand cmd = new SqlCommand(sql, conn);
    SqlParameter[] pram = new SqlParameter[7];
    pram[0] = new SqlParameter("@fname", SqlDbType.VarChar, 50);
    pram[1] = new SqlParameter("@lname", SqlDbType.VarChar, 50);
    pram[2] = new SqlParameter("@dob", SqlDbType.VarChar, 50);
    pram[3] = new SqlParameter("@gender", SqlDbType.Char, 10);
    pram[4] = new SqlParameter("@fathername", SqlDbType.VarChar, 50);
    pram[5] = new SqlParameter("@contact", SqlDbType.Int, 100);
    pram[6] = new SqlParameter("@address", SqlDbType.VarChar, 50);

    pram[0].Value = fname;
    pram[1].Value = lname;
    pram[2].Value = dob;
    pram[3].Value = gender;
    pram[4].Value = fathername;
    pram[5].Value = contact;
    pram[6].Value = address;

    for (int i = 0; i < pram.Length; i++)
    {
        cmd.Parameters.Add(pram[i]);
    }
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
}
catch(System.Data.SqlClient.SqlException ex_msg)
{
    string msg = "Error occured while inserting";
    msg += ex_msg.Message;
    throw new Exception(msg);
}
finally
{
    conn.Close();
}
检查您在此处传递的内容:

pram[5] = new SqlParameter("@contact", SqlDbType.Int, 100);
如果contact是字符串,则执行以下操作:

pram[5].Value = contact;

你的错误是什么?并提供完整的函数include queryFailed,将参数值从字符串转换为带有“pram[5].value=contact;”的Int32Check。是否为正确的整数。如果它为空,那么您的代码也会给您错误,因为您的值无法解析为int-检查您是否真的传入了
联系人
您期望的:)不,我仍然感到困惑,因为我没有得到it@SAKET-合同的类型是什么?您能显示其中的值吗?@SAKET-手机号码通常以
0
开头,或者除数字外还有其他字符,因此我建议您将其保存为数据库中的
varchar
,而不是像您目前这样的
Int32
int contactNumber;
pram[5].Value = int.TryParse(contact, out contactNumber) ? contactNumber : 0;