insertSql = "insert into drug values('" & TextBox1.Text & "','" & ComboBox1.Text & "','" & ComboBox2.Text & "','" & ComboBox4.Text & "','" & ComboBox5.Text & "'," & Val(TextBox2.Text) & ",0,0," + DateTimePicker2.Value.ToShortDateString() + "," + DateTimePicker1.Value.ToShortDateString() + ",'" & ComboBox3.Text & "')"
问题来了,插入数据库时,两个日期不管设置多少,结果均为1900年的,如下图
各位看官,其他部分插入正常,只用帮忙看看两个DateTimePicker处,即可!
6 个解决方案
#1
你最好指定字段名
insert into xxx(a,b,c) values(va,vb,vc)
你把insertSql 打印出来,放到数据库中执行一下
insert into xxx(a,b,c) values(va,vb,vc)
你把insertSql 打印出来,放到数据库中执行一下
#2
时间也当字符串处理啊,也应该加上单引号
#3
不要滥用 TextBox1.Text这种,最起码的“sql注入”还是要知道的。既然你对字段名用单引号括起来,那么就要将Text中的单引号最一次转换(去查你的数据库的编程手册中要求的“当字段名中有单引号时怎样转义”)。
提交日期也要根据数据库的格式的要求,不是随便用.net程序的格式去提交。例如可能需要写
不要使用 ToShortDateString 之类的因电脑操作系统设置参数随时变化的方法,要使用在不同语言操作系统、不同设置上都固定不变的写法。如果数据库要求表达成字符串,就要表达成字符串。
提交日期也要根据数据库的格式的要求,不是随便用.net程序的格式去提交。例如可能需要写
",0,0,'" + DateTimePicker2.Value.ToString("yyyy-MM-dd") + "',"
不要使用 ToShortDateString 之类的因电脑操作系统设置参数随时变化的方法,要使用在不同语言操作系统、不同设置上都固定不变的写法。如果数据库要求表达成字符串,就要表达成字符串。
#4
使用参数传递方式实现的的数据插入与更新。
#5
参考数据库的执行方法,并验证诸位的方法,此方法是正确的,其他的方法依然是年份不对问题,结贴
#6
感谢诸位的的不吝指导,可用分有限,还望见谅
#1
你最好指定字段名
insert into xxx(a,b,c) values(va,vb,vc)
你把insertSql 打印出来,放到数据库中执行一下
insert into xxx(a,b,c) values(va,vb,vc)
你把insertSql 打印出来,放到数据库中执行一下
#2
时间也当字符串处理啊,也应该加上单引号
#3
不要滥用 TextBox1.Text这种,最起码的“sql注入”还是要知道的。既然你对字段名用单引号括起来,那么就要将Text中的单引号最一次转换(去查你的数据库的编程手册中要求的“当字段名中有单引号时怎样转义”)。
提交日期也要根据数据库的格式的要求,不是随便用.net程序的格式去提交。例如可能需要写
不要使用 ToShortDateString 之类的因电脑操作系统设置参数随时变化的方法,要使用在不同语言操作系统、不同设置上都固定不变的写法。如果数据库要求表达成字符串,就要表达成字符串。
提交日期也要根据数据库的格式的要求,不是随便用.net程序的格式去提交。例如可能需要写
",0,0,'" + DateTimePicker2.Value.ToString("yyyy-MM-dd") + "',"
不要使用 ToShortDateString 之类的因电脑操作系统设置参数随时变化的方法,要使用在不同语言操作系统、不同设置上都固定不变的写法。如果数据库要求表达成字符串,就要表达成字符串。
#4
使用参数传递方式实现的的数据插入与更新。
#5
参考数据库的执行方法,并验证诸位的方法,此方法是正确的,其他的方法依然是年份不对问题,结贴
#6
感谢诸位的的不吝指导,可用分有限,还望见谅