jdbc getgeneratedkeys mysql_JDBC

JDBC分析

一、四步连接数据库:

1、数据创建

private static String url="jdbc:mysql://localhost:3306/DBname"

private String username="root";

private String password="123456";

2、加载驱动:

Class.forName("com.mysql.jdbc.Driver");

3、创建连接对象:

Connection con=DriverManager.getConnection(url, username,password);

4、创建StateMent对象

Statement stmt=con.createStatement();

二、数据库语句的拼接使用

1、 String sql="select * from user where username=' "+username+" ' and

password=' "+password+" ' ";

ResultSet rs=stmt.executeQuery(sql);

三、预编译数据库语句

1、采用PrepareStatement来申明stmt;

PreparedStatement ps=con.prepareStatement

(sql,Statement.RETURN_GENERATED_KEYS);

2、不采用拼接的SQL语句

String sql="insert into user(username,password,nick_name,qq)"+"values

(?,?,?,?)";

3、为?传值

ps.setString(1, "zhangwei");

ps.setString(2, "123");

ps.setString(3, "焰");

ps.setString(4, "12345678");

ps.addBatch();

4、执行SQL语句

ps.executeBatch();或者ps.executeQuery();//不能带有参数

5、获取getGeneratedKeys的值(主键值)

ResultSet key=ps2.getGeneratedKeys();

取得ResultSet结果集中的值

while(key.next()){

String id=key.getInt(1);//

我的主键为表的ID

}

四、事物的使用,一般来说数据库语句有一句就执行一句,但是有的情况下,当一个

SQL语句出现异常的时候,其他的SQL语句就都要撤销操作,这时候我们就

以使用事物来处理这种情况,这里面包含对SavePoint的使用。

1、两段正确的数据库语句

String sql="insert into user(username,password,nick_name,qq)"+"values

(?,?,?,?)";

PreparedStatement ps=con.prepareStatement

(sql,Statement.RETURN_GENERATED_KEYS);

ps.setString(1, "zhangwei");

ps.setString(2, "123");

ps.setString(3, "焰");

ps.setString(4, "12345678");

ps.addBatch();

ps.executeBatch();

String SQL="insert into user(username,password,nick_name,qq)"+"values

(?,?,?,?)";

PreparedStatement ps1=con.prepareStatement(SQL,

Statement.RETURN_GENERATED_KEYS);

ps1.setString(1, "zhang");

ps1.setString(2, "123");

ps1.setString(3, "xuan");

ps1.setString(4, "12345678");

ps1.addBatch();

ps1.executeBatch();

Savepoint aaa=con.setSavepoint("aaa");//设置保存节点

2、一条错误的SQL语句

String SQL2="insert into users(username,password,nick_name,qq)"+"values

(?,?,?,?)";

PreparedStatement ps2=con.prepareStatement(SQL,

Statement.RETURN_GENERATED_KEYS);

ps2.setString(1, "zhang");

ps2.setString(2, "123");

ps2.setString(3, "xuan");

ps2.setString(4, "12345678");

ps2.addBatch();

try{

ps2.executeQuery();

ResultSet key=ps2.getGeneratedKeys();

if(key.next())

System.out.println("key="+key.getInt(1));

}catch(SQLException f){

System.out.println("bbbb");

con.rollback(aaa);//回滚

}

3、con.commit();//全局提交

4、采用这种方法在创建连接的时候得设置

con.setAutoCommit(false);

不然一旦执行SQL语句就会自动提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值