IT十八掌作業_java基礎第21天_mysql

感謝大家對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 ;




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章