关于给数据库中插入sql语句

cmd.CommandText = "insert into Test_DB1(aaaa,bbbb,cccc)value(@t1,@c1,@d1)";在数据库其中aaaa是float bbbb和cccc都是varchar(50)

1. cmd.Parameters.AddWithValue("t1", Convert.ToDouble(ad.textBox1.Text));
2. cmd.Parameters.AddWithValue("c1", ad.comboBox1.SelectedItem.ToString());
3. cmd.Parameters.AddWithValue("d1", ad.dateTimePicker1.Value.ToString());

问题1 cmd.Parameters.AddWithValue("A", B);类型B的数据类型应该和所建数据库中相对应的字段相互匹配是吗?
问题2 如果问题1答案是“是”,那么运行后总是提示
1. cmd.Parameters.AddWithValue("t1", Convert.ToDouble(ad.textBox1.Text));输入字符串的格式不正确异常
问题3
2.3.两句话有问题吗?第3句话时间是那样获得的吗?

第1个回答  2010-09-28
问题1:是。

问题2:问题就在这里啦。因为aaaa是float型的数据,但是,你把

ad.textBox1.text的数据转换成了double型 ,你应该知道,double型的数据比

float型的数据要大。你想把double放到float,当然是存不进去罗。所以格式不正确嘛。 你应该Convert.ToSingle(ad.textBox1.Text),这才是转换成float型的方法。

问题3:23句话没有错,第三句是这样获得的。也可以用ad.dateTimePicker1.Text 另外,ad.comboBox1.text也可以获得选中项。
第2个回答  2010-09-28
cmd.Parameters.Add("@ti1", OleDbType.Double).Value = Convert.ToDouble(TextBox1.Text);

cmd.Parameters.Add("@ti2", OleDbType.Varchar).Value = ad.comboBox1.SelectedItem;

cmd.Parameters.Add("@ti3", OleDbType.Varchar).Value = ad.dateTimePicker1.ToString();
我这里用的oledb是链接access 如果是sqlserver的话 换成SqlDbType本回答被提问者采纳
第3个回答  2010-09-28
cmd.Parameters.AddWithValue("t1", Convert.ToDouble(ad.textBox1.Text));
这里应该这样写
cmd.Parameters.AddWithValue("@t1",SqlDbType.Double);//这是在指定字段的数据类型
赋值的语句应该这样写:
cmd.Parameters.AddWithValue("@t1",SqlDbType.Double).Value= Convert.ToDouble(TextBox1.Text);
第4个回答  2010-09-28
这样的提示其实告诉你的是数据类型不匹配或者不符合规范,你可以通过调试把最终生成的sql拿出来到数据库执行一下看看就知道问题所在了 。祝你好运
相似回答