分別使用PreparedStatement和Statement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程
阿新 • • 發佈:2019-02-14
在使用eclipse工具編寫Java程式碼連線資料庫並對資料庫進行處理時,總會用到對資料的增刪改查操作。那麼這個
時候就用到了java自帶的sql庫中的PreparedStatement或者Statement了。
其實PreparedStatement和Statement使用起來很相似,我認為二者之間的不同點也就是PreparedStatements可以
對資料進行批處理(使用addBatch()方法),而Statement只能對單個數據進行處理。
我將兩種寫法都寫到同一個類中通過主函式呼叫的方法實現,具體程式碼如下(完整程式碼,經測試):
其中使用PreparedStatement時的preparedStatement.executeUpdate("insert into aa values(4,'amy')");語句與import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class PutinStorage { //使用PreparedStatement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程 public static void process1(){ System.out.println("process1"); String sql_url = "jdbc:mysql://localhost:3306/test"; //資料庫路徑(一般都是這樣寫),test是資料庫名稱 String name = "root"; //使用者名稱 String password = "123456"; //密碼 Connection conn; PreparedStatement preparedStatement = null; try { Class.forName("com.mysql.jdbc.Driver"); //連線驅動 conn = DriverManager.getConnection(sql_url, name, password); //連線資料庫 if(!conn.isClosed()) System.out.println("成功連線資料庫"); //新建表 String sql = "create table aa(id int,name text)"; preparedStatement = conn.prepareStatement(sql); preparedStatement.executeUpdate(); //在表中新增內容 // preparedStatement.executeUpdate("insert into aa values(4,'amy')"); preparedStatement = conn.prepareStatement("insert into aa values(1,'張三')"); preparedStatement.executeUpdate(); preparedStatement = conn.prepareStatement("insert into aa values(2,'李四')"); preparedStatement.executeUpdate(); preparedStatement = conn.prepareStatement("insert into aa values(3,'王五')"); preparedStatement.executeUpdate(); //查詢表內容 System.out.println("第一次查詢表內容(刪除前)"); preparedStatement = conn.prepareStatement("select * from aa"); ResultSet result1 = preparedStatement.executeQuery(); while(result1.next()) System.out.println(result1.getInt("id")+"\t"+result1.getString("name")); //刪除表中資料 preparedStatement = conn.prepareStatement("delete from aa where id = 2"); preparedStatement.executeUpdate(); //查詢表中內容 System.out.println("第二次查詢表內容(刪除後)"); preparedStatement = conn.prepareStatement("select * from aa"); ResultSet result2 = preparedStatement.executeQuery(); while(result2.next()) System.out.println(result2.getInt("id")+"\t"+result2.getString("name")); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("未成功載入驅動。"); e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("未成功開啟資料庫。"); e.printStackTrace(); } } //使用Statement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程 public static void process2(){ System.out.println("process2"); String sql_url = "jdbc:mysql://localhost:3306/test"; //資料庫路徑(一般都是這樣寫),test是資料庫名稱 String name = "root"; //使用者名稱 String password = "123456"; //密碼 Connection conn; Statement statement = null; try { Class.forName("com.mysql.jdbc.Driver"); //連線驅動 conn = DriverManager.getConnection(sql_url, name, password); //連線資料庫 if(!conn.isClosed()) System.out.println("成功連線資料庫"); statement = conn.createStatement(); //新建表 String sql = "create table bb(id int,name text)"; statement.executeUpdate(sql); //在表中新增內容 statement.executeUpdate("insert into bb values(1,'張三')"); statement.executeUpdate("insert into bb values(2,'李四')"); statement.executeUpdate("insert into bb values(3,'王五')"); //查詢表內容 System.out.println("第一次查詢表內容(刪除前)"); ResultSet result1 = statement.executeQuery("select * from bb"); while(result1.next()) System.out.println(result1.getInt("id")+"\t"+result1.getString("name")); //刪除表中資料 statement.executeUpdate("delete from bb where id = 2"); //查詢表內容 System.out.println("第二次查詢表內容(刪除後)"); ResultSet result2 = statement.executeQuery("select * from bb"); while(result2.next()) System.out.println(result2.getInt("id")+"\t"+result2.getString("name")); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("未成功載入驅動。"); e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("未成功開啟資料庫。"); e.printStackTrace(); } } public static void main(String[] args){ process1(); // process2(); } }
preparedStatement = conn.prepareStatement("insert into aa values(1,'張三')");
preparedStatement.executeUpdate();
所表達的含義相同。執行結果分別為:
(1)、process1:
process1
成功連線資料庫
第一次查詢表內容(刪除前)
1張三
2李四
3王五
第二次查詢表內容(刪除後)
1張三
3王五
(2)、process2:
process2
成功連線資料庫
第一次查詢表內容(刪除前)
1張三
2李四
3王五
第二次查詢表內容(刪除後)
1張三
3王五