private void button1_Click(object sender, EventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
string query = @"insert into Contacts (fname,lname,llnum,mobnum,e-mail,street,city,country) values (@fname,@lname,@llnum,@mobnum,@e-mail,@street,@city,@country)";
cmd.CommandText = query;//@"insert into Contacts (fname,lname,llnum,mobnum,e-mail,street,city,country) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "')";
OleDbParameter myParm = cmd.Parameters.Add("@fname", OleDbType.VarChar, 50);
myParm.Value = textBox1.Text;
myParm = cmd.Parameters.Add("@lname", OleDbType.VarChar, 50);
myParm.Value = textBox2.Text;
myParm = cmd.Parameters.Add("@llnum", OleDbType.Integer, 12);
myParm.Value = textBox2.Text;
myParm = cmd.Parameters.Add("@mobnum", OleDbType.Integer, 12);
myParm.Value = textBox2.Text;
myParm = cmd.Parameters.Add("@e-mail", OleDbType.VarChar, 50);
myParm.Value = textBox2.Text;
myParm = cmd.Parameters.Add("@street", OleDbType.VarChar, 50);
myParm.Value = textBox6.Text;
myParm = cmd.Parameters.Add("@city", OleDbType.VarChar, 50);
myParm.Value = textBox7.Text;
myParm = cmd.Parameters.Add("@country", OleDbType.VarChar, 50);
myParm.Value = textBox8.Text;
cmd.Connection = myconn;
myconn.Open();
cmd.ExecuteNonQuery();
System.Windows.Forms.MessageBox.Show("User Account Succefully Created", "Caption", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
myconn.Close();
}这就是我参数化字段的方法,但我得到“无法将参数值从字符串转换为Int32”。错误
发布于 2011-02-23 15:53:07
您将所有值都作为'string‘赋值给参数,这是不正确的。例如,您已将llnum参数声明为整数,因此分配给此参数的值应为整数:
myParm = cmd.Parameters.Add("@llnum", OleDbType.Integer, 12);
myParm.Value = Convert.ToInt32(textBox2.Text);发布于 2011-02-23 15:55:07
你是从哪里得到这个错误的?您有各种非文本参数,但您仍然试图为它们提供文本参数值。
就我个人而言,我会自己执行解析,例如
myParm = cmd.Parameters.Add("@llnum", OleDbType.Integer, 12);
myParm.Value = int.Parse(textBox2.Text, ...); // Whatever options you want to use这样,您就可以完全控制如何将文本转换为数据库参数,而不是依赖数据库提供程序完全按照您想要的方式进行转换-如果它确实尝试这样做的话,它可能不会这样做。
(我还建议声明不同的变量,而不是为不同的参数重用相同的变量。)
发布于 2011-02-23 15:56:32
如果您将使用以下命令,则会更容易:
cmd.Parameters.Add("@llnum", OleDbType.Integer, 12).Value =Convert.ToInt32(textbox.text);致以问候!
https://stackoverflow.com/questions/5088256
复制相似问题