1. 程式人生 > 實用技巧 >Java - Java 連線 SQL

Java - Java 連線 SQL

Java 連線SQL

資料庫連線

import java.sql.*; // 全部匯入

public class DemoFrame{
    public static Connection conn = null;
    public static Statement stmt = null; 
    	// 儘管將stmt設為全域性比較方便,但一個stmt使用多次可能會出現錯誤(rs未關閉),此時應該先寫rs.last();
    	// 更好的方法,是將stmt 設為區域性變數,每次需要執行新語句都重新建立stmt
    	// Statement stmt1 = conn.createStatement();
    	// ResultSet rs = stmt1.executeQuery(...);
    
    public static void main(String[] args){
        try{
	      // 連線資料庫
	      conn = DriverManager.getConnection("jdbc:mysql://localhost/myshop?serverTimezone=GMT%2B8&characterEncoding=utf8","root", "");
              EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					DemoFrame frame = new Hahah(); // 建立視窗
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
        }catch(SQLException ex){
		// 輸出提示資訊
		JOptionPane.showConfirmDialog(null,"發生意外錯誤","系統訊息",JOptionPane.CLOSED_OPTION);
		ex.printStackTrace();
        }
    }
};

資料庫操縱

  • 查詢操作
stmt.executeQuery("...");
/*
MySQL語法格式:

select * from [table_name] where [boolean expression]

e.g: 查詢商品名為'小汽車'的商品資訊

MySQL:    select * from items where 名稱='小汽車'
Java: 
	Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select * from items where 名稱='小汽車'");
*/
  • 插值操作
stmt.executeUpdate("...");
/*
MySQL語法格式:
insert into [table_name] values(a,b,c,d,e,...)

e.g: 插入一條商品資訊

MySQL:	insert into items values('001','小汽車',100,100,0);
Java:
	Statement stmt = conn.createStatement();
	stmt.executeUpdae("insert into items values('001','小汽車',100,100,0)");
*/
  • 改值操作
stmt.executeUpdate("...")
/*
MySQL語法格式:
update [table_name] set [c1]=[v1],[c2=v2],... where [boolean expression]

e.g: 修改商品編號為001的商品,使其價格變為100,庫存變為200

MySQL: update items set 單價=100 where 編號='001'
Java:
	Statement stmt = conn.createStatement();
	stmt.executeUpdate("update items set 單價=10,庫存=200 where 編號='001'");
*/

ResultSet 使用

這一部分很簡單,不需要了解太多

ResultSet rs = stmt.executeQuery("..."); // 獲取方式
while(rs.next()){
    // rs.getString( cNum )
    // rs.getInt( cNum )
}

只有一點需要注意,rs在呼叫get()方法之前,一定要執行.next()