感谢大家对IT十八掌大数据的支持,今天的作业如下:


1.实践PreparedStament的CRUD操作。

2.对比Statement和PreparedStatement的大批量操作耗时?(100000记录)


3.事务特点?


4.mysql client如何控制事务?








--------------------------------------------------------------------------------------------------------

1.实践PreparedStament的CRUD操作。

答:

package com.it18zhang.jdbc;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.Statement;


import org.junit.Test;


/**

 * 使用PreparedStatement

 */

public class TestJDBC3 {

@Test

public void insert(){


try {

//1.注册驱动

String driver = "com.mysql.jdbc.Driver" ;

Class.forName(driver);

//2.建立连接

String url = "jdbc:mysql://localhost:3306/mybase" ;

String username = "root" ;

String password = "root" ;

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

//3.创建语句对象

String sql = "insert into stus(id,name,age) values(?,?,?)" ;

PreparedStatement ppst = conn.prepareStatement(sql);

ppst.setInt(1, 100);

ppst.setString(2, "tomas");

ppst.setInt(3, 23);

ppst.execute();

ppst.close();

conn.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

/**

* update , id = 1, age = 10

*/

@Test

public void update() {

try {

//1.注册驱动

String driver = "com.mysql.jdbc.Driver" ;

Class.forName(driver);

//2.建立连接

String url = "jdbc:mysql://localhost:3306/mybase" ;

String username = "root" ;

String password = "root" ;

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

//3.创建语句对象

Statement st = conn.createStatement();

String sql= "update stus set age = ? where id = ?" ;

PreparedStatement ppst = conn.prepareStatement(sql);

ppst.setInt(1, 10);

ppst.setInt(2, 1);

boolean b = ppst.execute();

System.out.println("" + b);

st.close();

conn.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

/**

* delete , id = 1

*/

@Test

public void delete() {

try {

//1.注册驱动

String driver = "com.mysql.jdbc.Driver" ;

Class.forName(driver);

//2.建立连接

String url = "jdbc:mysql://localhost:3306/mybase" ;

String username = "root" ;

String password = "root" ;

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

//3.创建语句对象

String sql = "delete from stus where id = ?" ;

PreparedStatement ppst = conn.prepareStatement(sql);

ppst.setInt(1, 1);

boolean b = ppst.execute();

System.out.println("" + b);

conn.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

@Test

public void select() {

try {

//1.注册驱动

String driver = "com.mysql.jdbc.Driver" ;

Class.forName(driver);

//2.建立连接

String url = "jdbc:mysql://localhost:3306/mybase" ;

String username = "root" ;

String password = "root" ;

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

conn.setAutoCommit(false);

//3.创建语句对象

//select id, name  ,age form ...

String sql = "select * from stus where id > ?" ;

PreparedStatement ppst = conn.prepareStatement(sql);

ppst.setInt(1, 1);

boolean b = ppst.execute();

//判断是否是查询

if(b){

//获取查询结果集

ResultSet rs = ppst.getResultSet();

//移动游标

while(rs.next()){

//int id = rs.getInt("id");

Integer id = (Integer) rs.getObject("id");

String name = rs.getString("name");

Integer age = (Integer) rs.getObject("age");

System.out.println("id=" + id + ",name=" + name + ",age=" + age);

}

//结果集元数据

ResultSetMetaData meta = rs.getMetaData();

for(int i = 0 ; i < meta.getColumnCount() ; i ++){

System.out.print(meta.getColumnLabel(i + 1) + "  ");

}

}

//

//5.释放资源

ppst.close();

conn.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

}





2.对比Statement和PreparedStatement的大批量操作耗时?(100000记录)

答:

插入大批量数据测试


3.事务特点?

答:

ACID

原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。 

一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。 

隔离性(isolcation):一个事务处理对另一个事务处理没有影响。 

持续性(durability):事务处理的效果能够被永久保存下来 。


4.mysql client如何控制事务?

答:

mysql client下的事务操作

------------------------

1.关闭自动提交

set autocommmit = 0 ; //1 = true

2.开启事务

start transaction ;

3.提交事务

commit ;

4.回滚

rollback ;