Java

[Java]11.JDBC 第一次用JAVA連Ms SQL就上手 (上)

這邊記錄一下有關於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();

先下一堆的?在裡面 之後再來補充 就照順序填入這樣
基礎的觀念就這些

Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)