首页 新闻 会员 周边

java 数据库插入问题

0
悬赏园豆:30 [待解决问题]

直接上代码吧;

String sql ="Insert into tb_reader (name,sex,barcode,vocation,birthday,paperType,paperNO,tel,email,createDate,Operator,Remark,Typeid)"+
"values("+ name+ "','"+ sex + "','"+ barcode
+ "','"+ vocation+ "','"+ birthday+ "','"
+ paperType+ "','"+ paperNO+ "','"
+ tel+ "','"+ email+ "','"+ createDate
+ "','"+ operator+ "','"+ remark
+ "','"+ typeid + ")";

为什么我这样插入不进去数据库,会抛出异常?

可是如果把values中的值换成具体的值,比如‘小明’,‘男’等的话,就可以正常插入,

这是为什么呢?

T-mac_wzn的主页 T-mac_wzn | 初学一级 | 园豆:164
提问于:2016-07-26 19:11
< >
分享
所有回答(8)
0

你好,试着回答一下你的问题,不知道是不是可以帮助你。

问题在于你的字符串连接方式不对,具体可参考String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";这个sql语句。注意双引号中的字符串需要再次使用单引号,红色标注部分。

huang_chd | 园豆:202 (菜鸟二级) | 2016-07-26 21:17
1

从直观上,name左边的双引号之前少了一个单引号。其二不推荐这样写代码,你不是神,这么写会导致很严重的细节问题。

jasondyoung | 园豆:424 (菜鸟二级) | 2016-07-26 22:22
0

调试一下看看最后生成的sql是什么样的呗。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-07-27 09:14
0

(name,sex,barcode,vocation,birthday,paperType,paperNO,tel,email,createDate,Operator,Remark,Typeid)values(1','2','3','4','5','6)

左边少一个单引号,右边少一个单引号。

用main方法测试一下输出的sql,就知道有什么问题了。

学-思-忘 | 园豆:204 (菜鸟二级) | 2016-07-27 15:25
0

建议参数使用问号代替,不然不易观察,易出错。

如:

sql="insert into table_name values(seq_1.nextval,?,?,?)";

 Connection conn ;

 PreparedStatement ps;

ps = conn.prepareStatement(sql);

然后对?对应的参数赋值(i代表第几个?):

ps.setXXX(i, 参数);

.............

 

 

   

雪飞就飞 | 园豆:202 (菜鸟二级) | 2016-07-27 17:26
0

少单引号大家都看出来了,另外你可以调试一下,看你的那些name、sex等变量是否都有值

风归云隐 | 园豆:416 (菜鸟二级) | 2016-07-28 16:25
0

 具体问题大家都说了,项目应用上不推荐拼接SQL ,建议使用PreparedStatement 类进行值的插入。

Hoody | 园豆:122 (初学一级) | 2016-08-10 16:55
0

这样写代码会出现大量的引号,不利于代码的阅读!

MaxFish | 园豆:165 (初学一级) | 2017-08-15 09:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册