講到了如何用java串連mysql資料庫,並讀取資料庫裡某欄位的值,這次需要涉及的是更新資料庫操作。對於入門級的學習者來說,最簡單的方法有兩種。 先來看下之前如何讀取資料庫的:
代碼如下 |
複製代碼 |
Statement st = con.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM user where name = '" + name + "'"); |
是的,我們用的select語句,而更新資料庫,用的是update語句(誰扔的石頭,NND我都說了這是入門級的教程)。
代碼如下 |
複製代碼 |
Statement st = con.createStatement(); ResultSet rs = st.executeQuery("UPDATE user set password = '" + password + "'" where name = '" + name + "'"); |
其實這裡還有另外一種方法,利用select先找到資料匹配的那條記錄,然後直接用updateRow()
來更新記錄:
代碼如下 |
複製代碼 |
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs = st.executeQuery("SELECT * FROM user where name = '" + name + "'"); rs.updateString("password",password); rs.updateRow(); |
個人覺得第2種方法的好處是不太容易由於少個引號而出現語法錯誤。注意第2種方法的createStatement()是有參數的,必須是updatable才行,否則re.updateRow()是會報錯的。
這裡順便說一下刪除的文法:
代碼如下 |
複製代碼 |
Statement st = con.createStatement(); st.execute("DELETE FROM user where name = '" + name + "'"); |
另一種辦法
建一個簡單的資料庫如下:
代碼如下 |
複製代碼 |
import java.sql.*; public class GetConnection { public static void main(String[] args){ try{ //調用Class.forName()方法載入驅動程式 Class.forName("com.mysql.jdbc.Driver"); System.out.println("成功載入MySQL驅動!"); }catch(ClassNotFoundException e1){ System.out.println("找不到MySQL驅動!"); e1.printStackTrace(); } String url="jdbc:mysql://localhost:3306/mysql"; //JDBC的URL //調用DriverManager對象的getConnection()方法,獲得一個Connection對象 Connection conn; try { conn = DriverManager.getConnection(url, "root",""); //建立一個Statement對象 Statement stmt = conn.createStatement(); //建立Statement對象 System.out.print("成功串連到資料庫!"); stmt.close(); conn.close(); } catch (SQLException e){ e.printStackTrace(); } } }
|
2. 查詢資料表
在詢資料表時,需要用到ResultSet介面,它類似於一個資料表,通過該介面的執行個體可以獲得檢索結果集,以及對應資料表的介面資訊。
代碼如下 |
複製代碼 |
import java.sql.*;
public class SelectTable { public static void main(String[] args){ try{ //調用Class.forName()方法載入驅動程式 Class.forName("com.mysql.jdbc.Driver"); System.out.println("成功載入MySQL驅動!"); String url="jdbc:mysql://localhost:3306/aniu"; //JDBC的URL Connection conn; conn = DriverManager.getConnection(url, "root",""); Statement stmt = conn.createStatement(); //建立Statement對象 System.out.println("成功串連到資料庫!"); String sql = "select * from stu"; //要執行的SQL ResultSet rs = stmt.executeQuery(sql);//建立資料對象 System.out.println("編號"+"t"+"姓名"+"t"+"年齡"); while (rs.next()){ System.out.print(rs.getInt(1) + "t"); System.out.print(rs.getString(2) + "t"); System.out.print(rs.getInt(3) + "t"); System.out.println(); } rs.close(); stmt.close(); conn.close(); }catch(Exception e) { e.printStackTrace(); } } } |
修改和刪除資料庫
代碼如下 |
複製代碼 |
//修改刪除資料 import java.sql.*; public class UpdateDeleteDemo { public static void main(String[] args)throws Exception{ try{ //調用Class.forName()方法載入驅動程式 Class.forName("com.mysql.jdbc.Driver"); System.out.println("成功載入MySQL驅動!"); String url="jdbc:mysql://localhost:3306/aniu"; //JDBC的URL Connection conn; conn = DriverManager.getConnection(url, "root",""); Statement stmt = conn.createStatement(); //建立Statement對象 System.out.println("成功串連到資料庫!"); //查詢資料的代碼 String sql = "select * from stu"; //要執行的SQL ResultSet rs = stmt.executeQuery(sql);//建立資料對象 System.out.println("編號"+"t"+"姓名"+"t"+"年齡"); while (rs.next()){ System.out.print(rs.getInt(1) + "t"); System.out.print(rs.getString(2) + "t"); System.out.print(rs.getInt(3) + "t"); System.out.println(); } //修改資料的代碼 String sql2 = "update stu set name=? where number=?"; PreparedStatement pst = conn.prepareStatement(sql2); pst.setString(1,"8888"); pst.setInt(2,198); pst.executeUpdate(); //刪除資料的代碼 String sql3 = "delete from stu where number=?"; pst = conn.prepareStatement(sql3); pst.setInt(1,701); pst.executeUpdate(); ResultSet rs2 = stmt.executeQuery(sql);//建立資料對象 System.out.println("編號"+"t"+"姓名"+"t"+"年齡"); while (rs.next()){ System.out.print(rs2.getInt(1) + "t"); System.out.print(rs2.getString(2) + "t"); System.out.print(rs2.getInt(3) + "t"); System.out.println(); } rs.close(); stmt.close(); conn.close(); }catch(Exception e) { e.printStackTrace(); } } } |