首页 > 数据库技术 > 详细

jdbc学习过程问题记录

时间:2015-08-18 13:39:51      阅读:291      评论:0      收藏:0      [点我收藏+]

I、String sql = "insert into contacts (name,phone,email,refer_id) "
        +"values(‘xu‘,‘020-87662341‘,‘yahoo@yahoo.com.cn‘,"
        +"select id from contacts where name=himan)";

DML语句中有子查询语句,编译能通过,但运行时提示有语法错误

1、子查询语句要用括号括起来

2、himan表示字符串要用单引号

更正基本语法之后依然提示有错误,“You cannot specify target table for update in FROM clause”,网上百度了下,原因是MySQL

中不能先select出同一表中的某些值,再update这个表(在同一语句中)。需要先把select出来的值建表,然后在select这个表中的值,并update原表

也即:

Connection conn = DriverManager.getConnection();

Statement stmt = conn.createStatement();

boolean autoCommit = conn.getAutoCommit();

//开启事务

conn.setAutoCommit(false);

sql1 = "create table temp as (select * from contacts)";

stmt.addBatch(sql1);

sql2 = "insert into contacts (name,phone,email,refer_id) "
        +"values(‘xu‘,‘020-87662341‘,‘yahoo@yahoo.com.cn‘,"
        +"(select id from temp where name=‘himan‘))";

stmt.addBatch(sql2);

sql3 = "delete table temp";

stmt.addBatch(sql3);

conn.commit();

conn.setAutoCommit(autoCommit);

 

II、 mysql.exe与mysqld.exe的区别:前者是命令行对话框程序,后者是MySQL的服务程序,要使用MySQL就必须启动mysqld.exe程序

 

jdbc学习过程问题记录

原文:http://www.cnblogs.com/himanxu/p/4738914.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!