這邊記錄一下有關於JAVA存取資料庫的東西 雖然我也不知道我目前觀念是不是對的
但是大概就是這樣 頂多一些小地方需要補充吧
在java裡面 有兩種存取資料庫的方式 JDBC跟ODBC (Open Database Connectivity)
jdbc是java寫的odbc是m$寫的 想當然而JDBC比較好用
這邊先列出一下php連mysql的方式
$link = mysql_connect("localhost", "root", "0000") mysql_select_db("db01"); // 選資資料庫 $sql = "SELECT * FROM $menuname"; $result = mysql_query($sql);
而java概念其實差不多,只是多了一個要先載入驅動程式
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String connUrl = "jdbc:sqlserver://localhost:1433;databaseName=db03"; Connection conn = DriverManager.getConnection(connUrl, "sa", "passw0rd"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT empname, salary FROM employee");
這樣其實就完成了一個連接sql的方式 接下來再丟個while去讀他就好
而1.第一行載入驅動的方式有三種
1.Clss Loader方式
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2.register方式
DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
3.System Property
System.setProperty("jdbc.drivers", "com.microsoft.sqlserver.jdbc.SQLServerDriver
選一個喜歡的就好 沒啥差別的樣子
2.其實沒啥好講的 就是localhost:port 資料庫名稱..
4.connection介面
connection介面其實有三種連接方式
1.conn.createStatement(); 一般用法
2.conn.prepareStatement(); 可以預先編譯sql指令 效能較快
常用於須變數傳遞且重複執行的sql
3.conn.prepareCall(); 預存程序,就是其實好像要把要查的sql表早就在創
一個table以物件方式存好在資料庫了 所以最快!
5.執行sql指令
執行有三種作法executeQuery() 用於查詢而已 select
executeUpdate() 用於insert update delete
execute() 不知道要幹麻時用 通吃 但難用 也少用
——————————————————————————
以上查詢完了
接下來要show出來啦!
while(rs.next()) { System.out.println("name = " + rs.getString("empname")); System.out.println("salary = " + rs.getDouble("salary")); }
我們可以用next來移動指標
所以其實還有next()previous()first()last()before()beforeFirst()afterLast()
absolute(int row) trlative(int row)ifFirst()isLast()isBeforeFirst()
isAfterLast()wasNull()等用法
gettype()
其實取值得系列就都是gettype 例如上面的getString getDouble 還有getString
getObject等 後面可以塞一堆getxxxx的 看你是啥型態就get啥
而java的insert update有一個很好玩的地方就是 ? 他可以下一堆問號在sql裡
String ins_stmt = "INSERT INTO employee VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(ins_stmt); pstmt.setInt(1, 1009); pstmt.setString(2, "Jean Tsao"); pstmt.setString(3, "2008/10/10"); int num = pstmt.executeUpdate();e();
先下一堆的?在裡面 之後再來補充 就照順序填入這樣
基礎的觀念就這些