標籤:
需要學習java,記錄從。net到java的筆記。
下載jar包首先針對於不同的資料庫需要下載相應的jar包。類似於.net 中串連不同資料庫的dll,只是.net直接在framework裡麵包含了,這個需要自己到對應的官網上下載。
主要包:import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement; import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;
驅動名稱等:http://www.cnblogs.com/kunpengit/archive/2011/12/13/2285933.html
資料庫 |
驅動類名 |
URL格式 |
Oracle |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:@hostip:1521:dbname |
Sybase |
com.sybase.jdbc2.jdbc.SybDriver |
jdbc:sybase:Tds:hostip:4100/dbname |
Mysql |
com.mysql.jdbc.Driver |
jdbc:mysql://hostip:3306/dbname?useUnicode=true&characterEncoding=GBK |
SQLServer 2000 |
com.microsoft.jdbc.sqlserver.SQLServerDriver |
jdbc:microsoft:sqlserver://hostip:1433;DatabaseName=dbname |
SQLServer 2005 |
com.microsoft.sqlserver.jdbc.SQLServerDriver |
jdbc:sqlserver://hostip:1433;DatabaseName=dbname |
SQLServer 7.0 |
net.sourceforge.jtds.jdbc.Driver |
jdbc:jtds:sqlserver://hostip:1433/dbname |
DB2 |
com.ibm.db2.jcc.DB2Driver |
jdbc:db2://hostip:50000/dbname |
Informix |
com.informix.jdbc.IfxDriver |
jdbc:informix-sqli://hostip:port/dbname:informixserver=<dbservername> |
主要對象PreparedStatement (為了好記,可以當做command對象)
boolean |
execute() 在此 PreparedStatement 對象中執行 SQL 陳述式,該語句可以是任何種類的 SQL 陳述式。 |
ResultSet |
executeQuery() 在此 PreparedStatement 對象中執行 SQL 查詢,並返回該查詢產生的 ResultSet 對象。 |
int |
executeUpdate() 在此 PreparedStatement 對象中執行 SQL 陳述式,該語句必須是一個 SQL 資料操作語言(Data Manipulation Language,DML)語句,比如 INSERT、UPDATE 或 DELETE 語句;或者是無返回內容的 SQL 陳述式,比如 DDL 語句。 |
防止sql注入
pstmt.setString(1, "pf"); 類似與param
程式碼片段:public static int update() { Connection conn = getConn(); int i = 0; String sql = "update user set username=? where userid=?"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, "pf"); pstmt.setString(2, "1"); i = pstmt.executeUpdate(); System.out.println("resutl: " + i); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; }
返回資料集合
與c#有個比較大的不同點,c#中ado.net裡面關於資料操作的封裝類,像dataset、datatable,這些在java中都沒有與之對應的類。返回資料查詢的結果只有ResultSet。
因此,如果想返回結果資料結合需要自己實現。以下是實現樣本: 首先是實體類
package testJDBC;public class userEntity { private String _userid; private String _userName; public String Userid(){ return this._userid; } public void SetUserid(String NewValue){ this._userid=NewValue; } public String UserName(){ return this._userName; } public void SetUserName(String NewValue){ this._userName=NewValue; }}
然後是資料訪問類中的具體實現
public static ArrayList<userEntity> getUserList() { ArrayList<userEntity> userList = new ArrayList<userEntity>(); Connection conn = getConn(); String sql = "select * from user"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); int col = rs.getMetaData().getColumnCount(); while (rs.next()) { userEntity tmpUser = new userEntity(); tmpUser.SetUserid(rs.getString("userid")); tmpUser.SetUserName(rs.getString("username")); userList.add(tmpUser); } } catch (SQLException e) { e.printStackTrace(); } return userList; }
從.net到java系列之jdbc