1. 程式人生 > >JAVA之JDBC的簡單使用(Mysql)

JAVA之JDBC的簡單使用(Mysql)

nag cep 發現 jdb box 分享 .get 不知道 今天

JDBC增刪查改

昨天七七八八的關於Mysql的配置 和 基本使用也算是初步解決了,今天 抽空看了JAVA的JDBC(JAVA DATA BASE CONNECTION)我也不知道我全稱拼寫對對不對??,筆者英文水平太渣渣。

  具體的關於解釋jdbc的東東在本文就不闡述了,網上百度一大堆,本文主要記錄 實現過程 中的關鍵點和小坑。

首先 就要把這個問題的解決方法給拋出來

PreparedStatement 的占位符使用 :

PreparedStatement是Statement的改良版,具有預編譯功能,方便使用,運行速度快。

可以通過?占位符把字段值替換,之後通過setXXX方法,註入字段值。

但是?占位符只能替換字段值,不能替換表名、字段名或者其他關鍵詞。

!!!!!!!!!這是個坑啊?? ,筆者以為占位符是 沒有限制的 使用 ,比如在查詢語句中使用 "select * from student where ?=?"       這裏筆者想著 pstatement.setString(1,"id");pstatement.setString(2,3);就可以實現id=3的查詢過濾,然後就沒有然後了,困擾了老紙半個多小時。。。。。。 下面,記錄實現過程,還是直接貼代碼記錄:

Jdbc_manage 負責 驅動的加載 數據庫的連接

 1 import java.sql.*;
2 3 import com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException; 4 5 public class Jdbc_manage { 6 7 private static Connection connection = null; 8 9 public static final String Driver = "com.mysql.jdbc.Driver"; 10 public static final String URL = "jdbc:mysql://47.93.250.19:3306/121sushe";
11 public static final String USER = "root"; 12 public static final String PASSWORD = "zy1314521.."; 13 14 // 方便其他類獲取一個 connection 實例的引用 15 public static Connection get_connection(){ 16 17 try { 18 //使用反射機制 加載驅動 19 Class.forName(Driver); 20 21 try { 22 // 這裏不知道為什麽需要一個強制的類型轉換 23 connection = (Connection)DriverManager.getConnection(URL,USER,PASSWORD); 24 System.out.println("Mysql連接成功!"); 25 26 // 這裏的測試 證明 連接正常 獲取數據正常 27 // try { 28 // Statement statement = connection.createStatement(); 29 // ResultSet resultSet = statement.executeQuery("select * from chengyuan"); 30 // resultSet.next(); 31 // System.out.println("->" + resultSet.getString("name")); 32 // } catch (Exception e) { 33 // // TODO: handle exception 34 // System.out.println("初始查詢失敗"); 35 // } 36 37 } catch (MySQLSyntaxErrorException e) { 38 // TODO: handle exception 39 System.out.println("Mysql連接失敗"); 40 e.printStackTrace(); 41 } 42 43 } catch (Exception e) { 44 // TODO: handle exception 45 System.out.println("驅動加載失敗"); 46 } 47 return connection; 48 49 } 50 51 public static void close_connection(){ 52 53 try { 54 55 if(connection != null && !connection.isClosed()){ 56 connection.close(); 57 } 58 59 } catch (Exception e) { 60 // TODO: handle exception 61 System.out.println("關閉connection異常"); 62 } 63 64 } 65 66 67 }

然後是 Use_mysql類的 ,這個類負責 增刪查改 和 顯示表中數據

  1 import java.sql.Connection;
  2 import java.sql.PreparedStatement;
  3 import java.sql.ResultSet;
  4 
  5 public class Use_mysql {
  6     
  7     //接收三個參數 分別對應表中的id name age
  8     public boolean insert(int id,String name,int age){
  9         boolean flag=false;
 10         Connection connection = null;
 11         PreparedStatement pStatement = null;
 12         
 13         try {
 14             
 15             String sql = "insert into chengyuan value(?,?,?)";
 16             connection = Jdbc_manage.get_connection();
 17             pStatement = connection.prepareStatement(sql);
 18             pStatement.setInt(1, id);
 19             pStatement.setString(2, name);
 20             pStatement.setInt(3,age);
 21             int i = 0;  
 22             i = pStatement.executeUpdate();   // 執行該條更新
 23             if(i!=0){
 24                 flag = true;
 25             }
 26             
 27             try {
 28                 pStatement.close();
 29                 connection.close();
 30                 
 31             } catch (Exception e) {
 32                 // TODO: handle exception
 33                 System.out.println("關閉失敗");
 34             }
 35             
 36         } catch (Exception e) {
 37             // TODO: handle exception
 38             System.out.println("添加行 異常");
 39             e.printStackTrace();
 40         }
 41         return flag;
 42     }
 43     
 44     //接收1個 id 參數
 45     public boolean delete(int id){
 46         boolean flag=false;
 47         Connection connection = null;
 48         PreparedStatement pStatement = null;
 49         
 50         try {
 51             String sql = "delete from chengyuan where id=?";
 52             connection = Jdbc_manage.get_connection();
 53             pStatement = connection.prepareStatement(sql);
 54             pStatement.setInt(1, id);    //刪除第  id 行
 55             int i = 0;
 56             i = pStatement.executeUpdate();
 57             if(i!=0){
 58                 flag = true;
 59             }
 60             
 61             try {
 62                 pStatement.close();
 63                 connection.close();
 64                 
 65             } catch (Exception e) {
 66                 // TODO: handle exception
 67                 System.out.println("關閉失敗");
 68             }
 69             
 70         } catch (Exception e) {
 71             // TODO: handle exception
 72             System.out.println("刪除行 異常");
 73             e.printStackTrace();
 74         }
 75         return flag;
 76         
 77     }
 78     
 79     public boolean select(int id){
 80         boolean flag=false;
 81         Connection connection = null;
 82         PreparedStatement pStatement = null;
 83         ResultSet rSet = null;   //查詢操作不同於 其他操作 ,會返回一個結果集
 84         
 85         try {
 86             String sql = "select * from chengyuan where id=?";
 87             connection = Jdbc_manage.get_connection();
 88             pStatement = connection.prepareStatement(sql);
 89             pStatement.setInt(1, id);   //查詢 id  行
 90             
 91             try {
 92                 
 93                 rSet = pStatement.executeQuery();
 94                 
 95                 if(rSet.next()){
 96                     flag = true;
 97                     rSet.previous();
 98                 }
 99                 
100                 
101                 while(rSet.next()){
102                     System.out.println(rSet.getString("id") + "-----" + rSet.getString("name")
103                     + "-----" + rSet.getString("age"));
104                 }
105                 
106                 try {
107                     
108                     rSet.close();
109                     pStatement.close();
110                     connection.close();
111                     
112                 } catch (Exception e) {
113                     // TODO: handle exception
114                     System.out.println("關閉失敗");
115                 }
116                 
117             } catch (Exception e) {
118                 // TODO: handle exception
119                 System.out.println("結果集異常");
120                 e.printStackTrace();
121             }
122             
123         } catch (Exception e) {
124             // TODO: handle exception
125             System.out.println("查詢 異常");
126             e.printStackTrace();
127         }
128         return flag;
129         
130     }
131     
132     //接收3個參數 修改第 id 行的  name和age
133     public boolean update(int id,String name,int age){
134         boolean flag=false;
135         Connection connection = null;
136         PreparedStatement pStatement = null;
137         
138         try {
139             String sql = "update chengyuan set name=?,age=? where id=?";
140             connection = Jdbc_manage.get_connection();
141             pStatement = connection.prepareStatement(sql);
142             pStatement.setString(1, name);
143             pStatement.setInt(2, age);
144             pStatement.setInt(3, id);
145             
146             int i = 0;
147             i = pStatement.executeUpdate();
148             if(i!=0){
149                 flag = true;
150             }
151             
152             try {
153                 pStatement.close();
154                 connection.close();
155                 
156             } catch (Exception e) {
157                 // TODO: handle exception
158                 System.out.println("關閉失敗");
159             }
160             
161         } catch (Exception e) {
162             // TODO: handle exception
163             System.out.println("修改異常");
164             e.printStackTrace();
165         }
166         return flag;
167         
168     }
169     
170     //顯示所有數據
171     public boolean show(){
172         boolean flag=false;
173         Connection connection = null;
174         PreparedStatement pStatement = null;
175         ResultSet rSet = null;   
176         
177         try {
178             String sql = "select * from chengyuan";
179             connection = Jdbc_manage.get_connection();
180             pStatement = connection.prepareStatement(sql);
181             
182             try {
183                 
184                 rSet = pStatement.executeQuery();
185                 
186                 if(rSet.next()){
187                     flag = true;
188                     rSet.previous();
189                 }
190                 
191                 while(rSet.next()){
192                     System.out.println(rSet.getString("id") + "-----" + rSet.getString("name")
193                     + "-----" + rSet.getString("age"));
194                 }
195                 
196             } catch (Exception e) {
197                 // TODO: handle exception
198                 System.out.println("結果集異常");
199                 e.printStackTrace();
200             }
201             
202         } catch (Exception e) {
203             // TODO: handle exception
204             System.out.println("查詢 異常");
205             e.printStackTrace();
206         }
207         return flag;
208     }
209     
210 
211 }

然後是 Main:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         
 8         Use_mysql test = new Use_mysql();
 9         Scanner keyboard = new Scanner(System.in);
10         while(true){
11             Main.caidan();
12             System.out.println("請輸入");
13             int input = 0;
14             input = keyboard.nextInt();
15             if(input!=0){
16                 Main.xuanze(test, input);
17                 Jdbc_manage.close_connection();
18             }else{
19                 System.exit(0);
20             }
21         }
22         
23 
24     }
25     
26     public static void xuanze(Use_mysql test,int n){
27         Scanner pppp = new Scanner(System.in);
28         switch(n){
29         case 1:
30             int id1,age1;
31             String name1;
32             System.out.println("請以此輸入你要添加的行的 id");
33             id1 = pppp.nextInt();
34             pppp.nextLine();
35             System.out.println("請以此輸入你要添加的行的 name");
36             name1 = pppp.next();
37             pppp.nextLine();
38             System.out.println("請以此輸入你要添加的行的 age");
39             age1 = pppp.nextInt();
40             pppp.nextLine();
41             if(test.insert(id1, name1, age1)){
42                 System.out.println("添加成功");
43             }
44             break;
45         case 2:
46             int id2;
47             System.out.println("請輸入你要刪除的行對應的id");
48             id2 = pppp.nextInt();
49             if(test.delete(id2)){
50                 System.out.println("刪除成功");
51             }
52             break;
53         case 3:
54             int id3;
55             System.out.println("請輸入你要查詢的行對應的id");
56             id3 = pppp.nextInt();
57             if(test.select(id3)){
58                 System.out.println("查詢成功");
59             }
60             break;
61         case 4:
62             int id4,age4;
63             String name4;
64             System.out.println("請輸入你要修改的行對應的id");
65             id4 = pppp.nextInt();
66             pppp.nextLine();
67             System.out.println("輸入修改此行的name age");
68             name4 = pppp.next();
69             pppp.nextLine();
70             age4 = pppp.nextInt();
71             if(test.update(id4, name4, age4)){
72                 System.out.println("修改成功");
73             }
74             break;
75         case 5:
76             System.out.println("當前表中數據為:");
77             if(test.show()){
78                 System.out.println("顯示完畢");
79             }
80             break;
81             default :System.out.println("輸入指令有誤");break;
82             
83         }
84     }
85     
86     public static void caidan(){
87         System.out.println("******輸入0結束*******");
88         System.out.println("*****1.插入一條數據*****");
89         System.out.println("*****2.刪除一條數據*****");
90         System.out.println("*****3.查詢一條數據*****");
91         System.out.println("*****4.修改一條數據*****");
92         System.out.println("*****5.顯示所有數據*****");
93     }
94 
95 }

技術分享

技術分享

OK 成功。

當然,可能還有很多 沒有發現的問題,如果你發現了 希望你可以在評論區留言,共同進步??

  

JAVA之JDBC的簡單使用(Mysql)