java mysql数据库编程_java JDBC数据库(mysql)编程
什么是JDBC
? JDBC(Java Data Base Connectivity,Java數據庫連接)
? 是一種用于執行SQL語句的Java API,為多種關系數據庫提供統一訪問
? 它由一組用Java語言編寫的類和接口組成
JDBC訪問數據庫步驟
? 1:加載一個Driver驅動
要通過JDBC與數據庫連接,先要加載JDBC驅動Driver,這個要想導入一個mysql-connector-java.jar包;各版本
不同的JDK版本可能對應不同的jar包,如果不行可以換一個jar包試一下;具體不同的編輯器導入jar包的方式可能不一樣,所以導入包的方式不懂的話可以到網上搜一下;
java加載mysql數據庫Driver驅動的形式:
5.XXX之前版本: Class.forName("com.mysql.JDBC.Driver");
6.XXX版本之后的就是? ??Class.forName("com.mysql.cj.JDBC.Driver")
? 2:創建數據庫連接(Connection)
與數據庫建立連接的方法是調用DriverManager.getConnection(String url, String user, String password )方法
? Connection conn=null;
? String url="jdbc:mysql://localhost:3306/login"; // 格式是 "jdbc:mysql://IP地址:端口號/數據庫名稱"
? String user=“root"; //用戶名
? String password=“7820170"; //密碼
? conn = DriverManager.getConnection(url, user, password); //建立連接
? 3 :創建SQL命令發送器Statement對象
有三種 Statement對象:
? Statement:用于執行不帶參數的簡單SQL語句;(這個對象要直接傳一個字符串來操作數據庫,雖然可以拼接字符串,但不方便,還有sql注入的危險;)
String sql="select * from user where id=1";//創建sql語句
Statement stmt=conn.createStatement();//創建Statement對象
stmt.execute(sql);//發送sql語句,對于發送還有其他的方法,有不同的功能,后面再講
? PreparedStatement(從 Statement 繼承):用于執行帶或不帶參數的預編譯SQL語句;(這個對象可以,通過傳參數的方式來完成sql語句的編寫,比較方便和安全,但這個SQL語句要預編譯,對于操作大量SQL語句不合適,如果需要操作大量SQL語句還是使用Statement比較好)
String sql="insert into students (name,age,school) values (?,?,?)";//?表示占位符
PreparedStatement ps =conn.prepareStatement(sql);//因為 PerparedStatement 中的 SQL 語句數據庫需要進行預編譯和緩存,
因此要在創建 PerparedStatement 對象時給出 SQL 語句
ps.setString(1, "hhh");//傳參數,從1開始,而不是從0開始
ps.setString(2, "18");
ps.setString(3, "廣財");
System.out.println("成功插入一條信息");
ps.execute();//提交
? CallableStatement(從PreparedStatement 繼承):用于執行數據庫存儲過程的調用。
這個暫時不清楚,就不寫了
? 4:通過Statement發送SQL命令并得到結果
ResultSetexecuteQuery(String sql); 執行SQL查詢,并返回ResultSet 對象。intexecuteUpdate(String sql); 可執行增,刪,改,返回執行受到影響的行數。booleanexecute(String sql); 可執行任何SQL語句,返回一個布爾值,表示是否返回ResultSet 。
? 5:處理結果(select語句)
返回的RsultSet如何遍歷:
ResultSet rs=ps.executeQuery();//返回的是一個迭代對象while(rs.next()) {//判斷是否還有可以迭代的對象
System.out.println(rs.getInt(1)+"---"+rs.getString(2)+"---"+rs.getInt(3));//getInt(1)返回第一列的int行的數據,如果數據類型不對會報錯當然也可以直接傳第一列的名稱,比如:getInt("id");
}
? 6:關閉數據庫資源
? 作為一種好的編程風格,應在不需要Statement對象和Connection對象時顯式地關閉它們。關閉Statement對象和Connection對象的語法形式為:
? public void close() throws SQLException
? 用戶不必關閉ResultSet。當它的 Statement 關閉、重新執行或用于從多結果序列中獲取下一個結果時,該ResultSet將被自動關閉。
? 注意:要按先ResultSet結果集,后Statement,最后Connection的順序關閉資源,因為Statement和ResultSet是需要連接是才可以使用的,所以在使用結束之后有可能其他的Statement還需要連接,所以不能先關閉Connection。
try{
rs.close();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}try{
ps.close();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}try{
conn.close();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
總結
以上是生活随笔為你收集整理的java mysql数据库编程_java JDBC数据库(mysql)编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太好了 春节前油价有变!加满一箱油可省一
- 下一篇: 蕾哈娜亮相!Apple Music超级碗