[Java]jdbc[转]
生活随笔
收集整理的這篇文章主要介紹了
[Java]jdbc[转]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[Java]jdbc[轉]
SQL Server數據庫驅動程序包名:msbase.jar mssqlserver.jar msutil.jar驅動類的名字:com.microsoft.jdbc.sqlserver.SQLServerDriverJDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename 說明:驅動程序包名有可能會變JDBC URL中黑色字體部分必須原封不動的保留,為該驅動識別的URL格式。紅色字體部需要根據數據庫的安裝情況填寫。其中各個部分含義如下:dbip –為數據庫服務器的IP地址,如果是本地可寫:localhost或127.0.0.1。port –為數據庫的監聽端口,需要看安裝時的配置,缺省為1433。databasename –數據庫的名字。舉例如果要訪問本地的數據庫allandb,端口1433,那么URL寫法如下:jdbc: microsoft: sqlserver:@localhost:1433; DatabaseName =allandb下載地址:http://www.microsoft.com/downloads/details.aspx
MySQL數據庫驅動程序包名:mysql-connector-java-3.1.11-bin.jar驅動類的名字:com.mysql.jdbc.DriverJDBC URL:jdbc:mysql://dbip:port/databasename 說明:驅動程序包名有可能會變JDBC URL中黑色字體部分必須原封不動的保留,為該驅動識別的URL格式。紅色字體部需要根據數據庫的安裝情況填寫。其中各個部分含義如下:dbip –為數據庫服務器的IP地址,如果是本地可寫:localhost或127.0.0.1。port –為數據庫的監聽端口,需要看安裝時的配置,缺省為3306。databasename –數據庫的名字。舉例如果要訪問本地的數據庫allandb,端口1433,那么URL寫法如下:jdbc:mysql://localhost:3306/allandb下載地址:http://dev.mysql.com/downloads/connector/j/
Access數據庫驅動程序包名:該驅動程序包含在JavaSE中,不需要額外安裝。驅動類的名字:sun.jdbc.odbc.JdbcOdbcDriverJDBC URL:jdbc:odbc:datasourcename說明:該驅動只能工作在Windows系統中,首先需要在操作系統中建立一個可以訪問Access數據庫的本地數據源(ODBC),如果名字為allandb,那么URL寫法如下:jdbc:odbc:allandbPreparedStatement接口: 預編譯的sql語句對象 作用: 解決了書寫sql語句時一些特殊的字符與sql保留字符沖突的問題,非常方便 /** *知識點: *PreparedStatement接口及方法的使用 *程序目標: *java文件: *PreparedInsert.java:連接數據庫,插入一條數據 *JdbcUtil.java:實現一個工具類,功能:1.連接數據庫 2.關閉資源 */package moudule1.preparedstatement;import java.sql.*; import moudule1.com.*;public class PreparedInsert {public static void main(String[] args){String sql="insert into yuchen_user (id,name) values (?,?)";System.out.println(sql);Connection con=null;PreparedStatement ps=null;try{con=JdbcUtil.getConnection();ps=con.prepareStatement(sql);ps.setInt(1,2);ps.setString(2,"zhangsan");ps.executeUpdate();ps.setInt(1,3);ps.setString(2,"lisi");ps.executeUpdate();}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,ps);}}}package moudule1.com;import java.sql.*;public class JdbcUtil{public static Connection getConnection() throws Exception{Class.forName("oracle.jdbc.driver.OracleDriver");return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name", "scott","tiger");}public static void close(Connection con,Statement st){close(con);close(st);}public static void close(Connection con,Statement st,ResultSet rs){close(con,st);close(rs);}public static void close(Connection con){try{con.close();}catch(Exception e){}}public static void close(Statement st){try{st.close();}catch(Exception e){}}public static void close(ResultSet rs){try{rs.close();}catch(Exception e){}}}數據庫的增刪改查的例子: /** *知識點: *JDBC+SQL+ORACLE *程序目標: *UserDao.java:實現了數據庫的增刪改查 *JdbcUtil.java:工具類,有連庫和關閉資源的方法 */package moudule1.idus;import java.sql.*; import moudule1.com.*;public class UserDao{private String sql;private Connection con;private Statement st;private ResultSet rs;public UserDao(){sql=null;con=null;st=null;rs=null;}public void insert(){sql="insert into yuchen_user (id,name) values(";sql+="4,'zhouwu')";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void delete(){sql="delete from yuchen_user where id=2";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void update(){sql="update yuchen_user set name='liumang' where id=1";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void select(){sql="select * from yuchen_user";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();rs=st.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt(1));System.out.println(rs.getString(2));}}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st,rs);}}public static void main(String[] args){UserDao ud=new UserDao();ud.select();ud.insert();ud.select();ud.update();ud.select();ud.delete();ud.select();}}一些常用的方法: /** *知識點: *execute方法,getResultSet(),getUpdateCount() *程序目標: *JdbcUtil.java:工具類,連接數據庫,關閉資源 *sqlExecutor.java:命令行參數輸入sql語句,并執行該語句 */ package moudule1.fangfa;import java.sql.*; import moudule1.com.*;public class sqlExecutor{public static void main(String[] args){Connection con=null;Statement st=null;try{con=JdbcUtil.getConnection();st=con.createStatement();boolean str=st.execute(args[0]);if(str){ResultSet rs=st.getResultSet();while(rs.next()){System.out.println(rs.getInt("id")+":"+rs.getString("name"));}rs.close();}else{int row=st.getUpdateCount();System.out.println(row);}}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}} 2. 補充JDBC連接MySQL加載及注冊JDBC驅動程序 Class.forName("com.mysql.jdbc.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); JDBC URL 定義驅動程序與數據源之間的連接 標準語法: <protocol(主要通訊協議)>:<subprotocol(次要通訊協議,即驅動程序名稱)>:<data source identifier(數據源)> MySQL的JDBC URL格式: jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][¶m2=value2]…. 示例:jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password 常見參數: user 用戶名 password 密碼 autoReconnect 聯機失敗,是否重新聯機(true/false) maxReconnect 嘗試重新聯機次數 initialTimeout 嘗試重新聯機間隔 maxRows 傳回最大行數 useUnicode 是否使用Unicode字體編碼(true/false) characterEncoding 何種編碼(GB2312/UTF-8/…) relaxAutocommit 是否自動提交(true/false) capitalizeTypeNames 數據定義的名稱以大寫表示 建立連接對象 String url="jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password"; Connection con = DriverManager.getConnection(url); 建立SQL陳述式對象(Statement Object) Statement stmt = con.createStatement(); 執行SQL語句 executeQuery() String query = "select * from test"; ResultSet rs=stmt.executeQuery(query); 結果集ResultSet while(rs.next()) {rs.getString(1);rs.getInt(2);} executeUpdate() String upd="insert into test (id,name) values(1001,xuzhaori)"; int con=stmt.executeUpdate(upd); execute() 示例: try{ } catch(SQLException sqle) { } finally { }Java類型和SQL類型 技術手冊P421 PreparedStatement(預編語句) PreparedStatement stmt = conn.prepareStatement("insert into test(id,name)values(?,?)"); stmt.setInt(1,id); stmt.setString(2,name); 注:一旦設定語句的參數值后,就可以多次執行改語句,直到調用clearParameters()方法將他清除為止 CallableStatement(預儲程序)技術手冊P430 JDBC2.0使用 ResultSet對象中的光標上下自由移動 Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=stmt.executeQuery("select * from test");public Statement createStatement(int resultSetType,int resultSetConcuttency) throws SQLExceptionresultSetType TYPE_FORWARD_ONLY 只能使用next()方法。 TYPE_SCROLL_SENSITIVE 可以上下移動,可以取得改變后的值。 TYPE_SCROLL_INSENSITIVE 可以上下移動。 resultSetConcuttency CONCUR_READ_ONLY 只讀 CONCUR_UPDATABLE ResultSet對象可以執行數據庫的新增、修改、和移除直接使用ResultSet對象執行更新數據 新增數據 Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE); ResultSet uprs=stmt.executeQuery("select * from test"); uprs.moveToInsertRow(); uprs.updateInt(1,1001); uprs.updateString(2,"許召日"); uprs.insertRow; 更新數據 Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE); ResultSet uprs=stmt.executeQuery("select * from test"); uprs.last(); uprs.updateString("name","xuzhaori"); uprs.updateRow; 刪除數據 Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE); ResultSet uprs=stmt.executeQuery("select * from test"); uprs.absolute(4); uprs.deleteRow();批處理 con.setAutoCommit(false); 關閉自動認可模式 Statement stmt=con.createStatement(); int[] rows; stmt.addBatch("insert into test values(1001,xuzhaori)"); stmt.addBatch("insert into test values(1002,xuyalin)"); rows=stmt.executeBatch(); con.commit(); 沒有任何錯誤,執行批處理stmt.executeBatch();JNDI-數據源(Data Source)與連接池(Connection Pool) Tomcat的JDBC數據源設置 技術手冊P439 連接池工具-Proxool Var 0.8.3 技術手冊P446 設置web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!--<?xml version="1.0" encoding="GB2312"?>--><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> …. <servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class><init-param> <param-name>propertyFile</param-name> <param-value>WEB-INF/classes/Proxool.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 后端統計端口添加下列 <servlet> <servlet-name>Admin</servlet-name> <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class> </servlet><servlet-mapping> <servlet-name>Admin</servlet-name> <url-pattern>/Admin</url-pattern> </servlet-mapping>….</web-app>配置Proxool.properties jdbc-0.proxool.alias=JSPBook jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/sample_db?user=root&password=browser&useUnicode=true&characterEncoding=UTF-8 jdbc-0.proxool.maximum-connection-count=10 jdbc-0.proxool.prototype-count=4 jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE jdbc-0.proxool.verbose=true jdbc-0.proxool.statistics=10s,1m,1d 后端統計接口添加此行 jdbc-0.proxool.statistics-log-level=DEBUG 使用Proxool連接池 Connection con = DriverManager.getConnection("proxool.JSPBook"); Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String query = "SELECT * FROM employee"; ResultSet rs = stmt.executeQuery(query);
現在讓我們來編譯上面的例子如下: C:\>javac JDBCExample.java C:\> 當運行JDBCExample,它會產生以下結果:C:\>java JDBCExample Connecting to database... Creating statement... Inserting one row.... Commiting data here.... List result set for reference.... ID: 100, Age: 18, First: Zara, Last: Ali ID: 101, Age: 25, First: Mahnaz, Last: Fatma ID: 102, Age: 30, First: Zaid, Last: Khan ID: 103, Age: 28, First: Sumit, Last: Mittal ID: 106, Age: 20, First: Rita, Last: Tez ID: 107, Age: 22, First: Sita, Last: Singh Goodbye! C:\>
?
>>http://www.cnblogs.com/xiohao/p/3507483.html
>>http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html
>>http://www.cnblogs.com/lee/archive/2007/08/25/869656.html
JDBC連接各種數據庫方法
1)連接Oracle 8/8i/9i/10g/11g(thin模式)Class.forName("oracle.JDBC.driver.OracleDriver").newInstance();String url="JDBC:oracle:thin:@localhost:1521:orcl" //orcl為Oracle數據庫的SID String user="test";String password="test";Connection con=DriverManager.getConnection(url,user,password);2)連接DB2數據庫Class.forName("com.ibm.db2.jcc.DB2Driver");String url="JDBC:db2://localhost:5000/testDb";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);3)連接MySQL數據庫Class.forName("com.mysql.jdbc.Driver");String url="JDBC:mysql://localhost:8080/testDB";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);4)連接SQL Server2000數據庫Class.forName("com.microsoft.JDBC.sqlserver.SQLServerDriver");String url="JDBC:microsoft:sqlserver://localhost:1433;DatabaseName=testDb";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);5)連接PostgreSQL數據庫Class.forName("org.postgresql.Driver");String url="JDBC:postgresql://localhost/testDb";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);6)連接Access數據庫Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");String url="JDBC:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/testDb/mdb");Connection conn=DriverManager.getConnection(url,"","");7連接Sybase數據庫Class.forName("com.sybase.JDBC.SybDriver");String url="JDBC:sybase:Tds:localhost:5007/testDb";Properties pro=System.getProperties();pro.put("user","userId");pro.put("password","user_password");Connection con=DriverManager.getConnection(url,pro);8連接informix數據庫Class.forName("com.informix.JDBC.ifxDriver");String url="JDBC:informix-sqli:localhost:1533/testDb:INFORMIXSERVER=myserver"user=testUser;password=testpassword"; Connection con=DriverManager.getConnection(url);完整java開發中JDBC連接數據庫代碼和步驟
JDBC連接數據庫 ?創建一個以JDBC連接數據庫的程序,包含7個步驟: 1、加載JDBC驅動程序: 在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機), 這通過java.lang.Class類的靜態方法forName(String className)實現。 例如: try{ //加載MySql的驅動類 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ System.out.println("找不到驅動程序類 ,加載驅動失敗!"); e.printStackTrace() ; } 成功加載后,會將Driver類的實例注冊到DriverManager類中。 2、提供JDBC連接的URL ?連接URL定義了連接數據庫時的協議、子協議、數據源標識。 ?書寫形式:協議:子協議:數據源標識 協議:在JDBC中總是以jdbc開始 子協議:是橋連接的驅動程序或是數據庫管理系統名稱。 數據源標識:標記找到數據庫來源的地址與連接端口。 例如:(MySql的連接URL) jdbc:mysql: //localhost:3306/test?useUnicode=true&characterEncoding=gbk ; useUnicode=true:表示使用Unicode字符集。如果characterEncoding設置為 gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字符編碼方式。 3、創建數據庫的連接 ?要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象, 該對象就代表一個數據庫的連接。 ?使用DriverManager的getConnectin(String url , String username , String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名和 密碼來獲得。 例如: //連接MySql數據庫,用戶名和密碼都是root String url = "jdbc:mysql://localhost:3306/test" ; String username = "root" ; String password = "root" ; try{ Connection con = DriverManager.getConnection(url , username , password ) ; }catch(SQLException se){ System.out.println("數據庫連接失敗!"); se.printStackTrace() ; } 4、創建一個Statement ?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 種類型: 1、執行靜態SQL語句。通常通過Statement實例實現。 2、執行動態SQL語句。通常通過PreparedStatement實例實現。 3、執行數據庫存儲過程。通常通過CallableStatement實例實現。 具體的實現方式: Statement stmt = con.createStatement() ; PreparedStatement pstmt = con.prepareStatement(sql) ; CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ; 5、執行SQL語句 Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate 和execute 1、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句 ,返回一個結果集(ResultSet)對象。 2、int executeUpdate(String sqlString):用于執行INSERT、UPDATE或 DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等 3、execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的 語句。 具體實現的代碼: ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; int rows = stmt.executeUpdate("INSERT INTO ...") ; boolean flag = stmt.execute(String sql) ; 6、處理結果 兩種情況: 1、執行更新返回的是本次操作影響到的記錄數。 2、執行查詢返回的結果是一個ResultSet對象。 ? ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些 行中數據的訪問。 ? 使用結果集(ResultSet)對象的訪問方法獲取數據: while(rs.next()){ String name = rs.getString("name") ; String pass = rs.getString(1) ; // 此方法比較高效 } (列是從左到右編號的,并且從列1開始) 7、關閉JDBC對象 操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲 明順序相反: 1、關閉記錄集 2、關閉聲明 3、關閉連接對象 if(rs != null){ // 關閉記錄集 try{ rs.close() ; }catch(SQLException e){ e.printStackTrace() ; } } if(stmt != null){ // 關閉聲明 try{ stmt.close() ; }catch(SQLException e){ e.printStackTrace() ; } } if(conn != null){ // 關閉連接對象 try{ conn.close() ; }catch(SQLException e){ e.printStackTrace() ; } }?
?
jdbc
什么是JDBC? Java語言訪問數據庫的一種規范,是一套API JDBC (Java Database Connectivity) API,即Java數據庫編程接口,是一組標準的Java語言中的接口和類,使用這些接口和類,Java客戶端程序可以訪問各種不同類型的數據庫。比如建立數據庫連接、執行SQL語句進行數據的存取操作。JDBC規范采用接口和實現分離的思想設計了Java數據庫編程的框架。接口包含在java.sql及javax.sql包中,其中java.sql屬于JavaSE,javax.sql屬于JavaEE。這些接口的實現類叫做數據庫驅動程序,由數據庫的廠商或其它的廠商或個人提供。為了使客戶端程序獨立于特定的數據庫驅動程序,JDBC規范建議開發者使用基于接口的編程方式,即盡量使應用僅依賴java.sql及javax.sql中的接口和類。JDBC驅動程序: 什么是JDBC驅動程序? 這些是各個數據庫廠家根據JDBC的規范制作的JDBC實現類 JDBC驅動程序的四種類型: 1. 第一種類型的驅動程序的實現是通過將JDBC的調用全部委托給其它編程接口來實現的,比如ODBC。這種類型的驅動程序需要安裝本地代碼庫,即依賴于本地的程序,所以便攜性較差。比如JDBC-ODBC橋驅動程序 2. 第二種類型的驅動程序的實現是部分基于Java語言的。即該驅動程序一部分是用Java語言編寫,其它部分委托本地的數據庫的客戶端代碼來實現。同類型1的驅動一樣,該類型的驅動程序也依賴本地的程序,所以便攜性較差 3. 第三種類型的驅動程序的實現是全部基于JAVA語言的。該類型的驅動程序通常由某個中間件服務器提供,這樣客戶端程序可以使用數據庫無關的協議和中間件服務器進行通信,中間件服務器再將客戶端的JDBC調用轉發給數據庫進行處理 4. 第四種類型的驅動程序的實現是全部基于JAVA語言的。該類型的驅動程序中包含了特定數據庫的訪問協議,使得客戶端可以直接和數據庫進行通信JDBC類結構:DriverManagerDriver DriverConnection ConnectionStatement StatementResultset ResultsetDriverManager:這個是一個實現類,它是一個工廠類,用來生產Driver對象的 這個類的結構設計模式為工廠方法 Driver:這是驅動程序對象的接口,它指向一個實實在在的數據庫驅動程序對象,那么這個數據庫驅動程序對象是從哪里來的呢? DriverManager工廠中有個方法:getDriver(String URL),通過這個方法可以得到驅動程序對象,這個方法是在各個數據庫廠商按JDBC規范設計的數據庫驅動程序包里的類中靜態實現的,也就是在靜態塊中 Connection:這個接口可以制向一個數據庫連接對象,那么如何得到這個連接對象呢? 是通過DriverManager工廠中的getConnection(String URL)方法得到的 Statement:用于執行靜態的SQL語句的接口,通過Connection中的createStatement方法得到的 Resultset:用于指向結果集對象的接口,結果集對象是通過Statement中的execute等方法得到的JAVA使用JDBC訪問數據庫的步驟: 1. 得到數據庫驅動程序 2. 創建數據庫連接 3. 執行SQL語句 4. 得到結果集 5. 對結果集做相應的處理(增,刪,改,查) 6. 關閉資源:這里釋放的是DB中的資源設置classpath: 1. 在java文件中起的包名一定要是工程基目錄下的子目錄,classpath:基目錄 2. .jar包,需要將這個.jar包的路徑包括這個文件的全名添加到classpath中來 Oracle連接字符串的書寫格式: “oracle:jdbc:thin:@ip:1521: 數據庫名”,”數據庫用戶名”,”數據庫密碼”簡單的例子: package moudule1.first;import java.sql.*;public class FirstJdbc {public static void main(String[] args){String sql="select * from yuchen_user";Connection con=null;Statement st=null;ResultSet rs=null;try{ Class.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name", "scott","tiger");st=con.createStatement();rs=st.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt("id"));System.out.println(rs.getString("name"));}}catch(Exception e){e.printStackTrace();}finally{try{con.close();}catch(Exception e){}try{st.close();}catch(Exception e){}try{rs.close();}catch(Exception e){}}}}常用數據庫的驅動程序及JDBC URL: Oracle數據庫: 驅動程序包名:ojdbc14.jar 驅動類的名字:oracle.jdbc.driver.OracleDriverJDBC URL:jdbc:oracle:thin:@dbip:port:databasename說明:驅動程序包名有可能會變JDBC URL中黑色字體部分必須原封不動的保留,為該驅動識別的URL格式。紅色字體部分需要根據數據庫的安裝情況填寫。其中各個部分含義如下:dbip –為數據庫服務器的IP地址,如果是本地可寫:localhost或127.0.0.1。port –為數據庫的監聽端口,需要看安裝時的配置,缺省為1521。databasename –為數據庫的SID,通常為全局數據庫的名字。舉例如果要訪問本地的數據庫allandb,端口1521,那么URL寫法如下:jdbc:oracle:thin:@localhost:1521:allandb 下載地址如下: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.htmlSQL Server數據庫驅動程序包名:msbase.jar mssqlserver.jar msutil.jar驅動類的名字:com.microsoft.jdbc.sqlserver.SQLServerDriverJDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename 說明:驅動程序包名有可能會變JDBC URL中黑色字體部分必須原封不動的保留,為該驅動識別的URL格式。紅色字體部需要根據數據庫的安裝情況填寫。其中各個部分含義如下:dbip –為數據庫服務器的IP地址,如果是本地可寫:localhost或127.0.0.1。port –為數據庫的監聽端口,需要看安裝時的配置,缺省為1433。databasename –數據庫的名字。舉例如果要訪問本地的數據庫allandb,端口1433,那么URL寫法如下:jdbc: microsoft: sqlserver:@localhost:1433; DatabaseName =allandb下載地址:http://www.microsoft.com/downloads/details.aspx
MySQL數據庫驅動程序包名:mysql-connector-java-3.1.11-bin.jar驅動類的名字:com.mysql.jdbc.DriverJDBC URL:jdbc:mysql://dbip:port/databasename 說明:驅動程序包名有可能會變JDBC URL中黑色字體部分必須原封不動的保留,為該驅動識別的URL格式。紅色字體部需要根據數據庫的安裝情況填寫。其中各個部分含義如下:dbip –為數據庫服務器的IP地址,如果是本地可寫:localhost或127.0.0.1。port –為數據庫的監聽端口,需要看安裝時的配置,缺省為3306。databasename –數據庫的名字。舉例如果要訪問本地的數據庫allandb,端口1433,那么URL寫法如下:jdbc:mysql://localhost:3306/allandb下載地址:http://dev.mysql.com/downloads/connector/j/
Access數據庫驅動程序包名:該驅動程序包含在JavaSE中,不需要額外安裝。驅動類的名字:sun.jdbc.odbc.JdbcOdbcDriverJDBC URL:jdbc:odbc:datasourcename說明:該驅動只能工作在Windows系統中,首先需要在操作系統中建立一個可以訪問Access數據庫的本地數據源(ODBC),如果名字為allandb,那么URL寫法如下:jdbc:odbc:allandbPreparedStatement接口: 預編譯的sql語句對象 作用: 解決了書寫sql語句時一些特殊的字符與sql保留字符沖突的問題,非常方便 /** *知識點: *PreparedStatement接口及方法的使用 *程序目標: *java文件: *PreparedInsert.java:連接數據庫,插入一條數據 *JdbcUtil.java:實現一個工具類,功能:1.連接數據庫 2.關閉資源 */package moudule1.preparedstatement;import java.sql.*; import moudule1.com.*;public class PreparedInsert {public static void main(String[] args){String sql="insert into yuchen_user (id,name) values (?,?)";System.out.println(sql);Connection con=null;PreparedStatement ps=null;try{con=JdbcUtil.getConnection();ps=con.prepareStatement(sql);ps.setInt(1,2);ps.setString(2,"zhangsan");ps.executeUpdate();ps.setInt(1,3);ps.setString(2,"lisi");ps.executeUpdate();}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,ps);}}}package moudule1.com;import java.sql.*;public class JdbcUtil{public static Connection getConnection() throws Exception{Class.forName("oracle.jdbc.driver.OracleDriver");return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name", "scott","tiger");}public static void close(Connection con,Statement st){close(con);close(st);}public static void close(Connection con,Statement st,ResultSet rs){close(con,st);close(rs);}public static void close(Connection con){try{con.close();}catch(Exception e){}}public static void close(Statement st){try{st.close();}catch(Exception e){}}public static void close(ResultSet rs){try{rs.close();}catch(Exception e){}}}數據庫的增刪改查的例子: /** *知識點: *JDBC+SQL+ORACLE *程序目標: *UserDao.java:實現了數據庫的增刪改查 *JdbcUtil.java:工具類,有連庫和關閉資源的方法 */package moudule1.idus;import java.sql.*; import moudule1.com.*;public class UserDao{private String sql;private Connection con;private Statement st;private ResultSet rs;public UserDao(){sql=null;con=null;st=null;rs=null;}public void insert(){sql="insert into yuchen_user (id,name) values(";sql+="4,'zhouwu')";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void delete(){sql="delete from yuchen_user where id=2";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void update(){sql="update yuchen_user set name='liumang' where id=1";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void select(){sql="select * from yuchen_user";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();rs=st.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt(1));System.out.println(rs.getString(2));}}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st,rs);}}public static void main(String[] args){UserDao ud=new UserDao();ud.select();ud.insert();ud.select();ud.update();ud.select();ud.delete();ud.select();}}一些常用的方法: /** *知識點: *execute方法,getResultSet(),getUpdateCount() *程序目標: *JdbcUtil.java:工具類,連接數據庫,關閉資源 *sqlExecutor.java:命令行參數輸入sql語句,并執行該語句 */ package moudule1.fangfa;import java.sql.*; import moudule1.com.*;public class sqlExecutor{public static void main(String[] args){Connection con=null;Statement st=null;try{con=JdbcUtil.getConnection();st=con.createStatement();boolean str=st.execute(args[0]);if(str){ResultSet rs=st.getResultSet();while(rs.next()){System.out.println(rs.getInt("id")+":"+rs.getString("name"));}rs.close();}else{int row=st.getUpdateCount();System.out.println(row);}}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}} 2. 補充JDBC連接MySQL加載及注冊JDBC驅動程序 Class.forName("com.mysql.jdbc.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); JDBC URL 定義驅動程序與數據源之間的連接 標準語法: <protocol(主要通訊協議)>:<subprotocol(次要通訊協議,即驅動程序名稱)>:<data source identifier(數據源)> MySQL的JDBC URL格式: jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][¶m2=value2]…. 示例:jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password 常見參數: user 用戶名 password 密碼 autoReconnect 聯機失敗,是否重新聯機(true/false) maxReconnect 嘗試重新聯機次數 initialTimeout 嘗試重新聯機間隔 maxRows 傳回最大行數 useUnicode 是否使用Unicode字體編碼(true/false) characterEncoding 何種編碼(GB2312/UTF-8/…) relaxAutocommit 是否自動提交(true/false) capitalizeTypeNames 數據定義的名稱以大寫表示 建立連接對象 String url="jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password"; Connection con = DriverManager.getConnection(url); 建立SQL陳述式對象(Statement Object) Statement stmt = con.createStatement(); 執行SQL語句 executeQuery() String query = "select * from test"; ResultSet rs=stmt.executeQuery(query); 結果集ResultSet while(rs.next()) {rs.getString(1);rs.getInt(2);} executeUpdate() String upd="insert into test (id,name) values(1001,xuzhaori)"; int con=stmt.executeUpdate(upd); execute() 示例: try{ } catch(SQLException sqle) { } finally { }Java類型和SQL類型 技術手冊P421 PreparedStatement(預編語句) PreparedStatement stmt = conn.prepareStatement("insert into test(id,name)values(?,?)"); stmt.setInt(1,id); stmt.setString(2,name); 注:一旦設定語句的參數值后,就可以多次執行改語句,直到調用clearParameters()方法將他清除為止 CallableStatement(預儲程序)技術手冊P430 JDBC2.0使用 ResultSet對象中的光標上下自由移動 Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=stmt.executeQuery("select * from test");public Statement createStatement(int resultSetType,int resultSetConcuttency) throws SQLExceptionresultSetType TYPE_FORWARD_ONLY 只能使用next()方法。 TYPE_SCROLL_SENSITIVE 可以上下移動,可以取得改變后的值。 TYPE_SCROLL_INSENSITIVE 可以上下移動。 resultSetConcuttency CONCUR_READ_ONLY 只讀 CONCUR_UPDATABLE ResultSet對象可以執行數據庫的新增、修改、和移除直接使用ResultSet對象執行更新數據 新增數據 Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE); ResultSet uprs=stmt.executeQuery("select * from test"); uprs.moveToInsertRow(); uprs.updateInt(1,1001); uprs.updateString(2,"許召日"); uprs.insertRow; 更新數據 Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE); ResultSet uprs=stmt.executeQuery("select * from test"); uprs.last(); uprs.updateString("name","xuzhaori"); uprs.updateRow; 刪除數據 Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE); ResultSet uprs=stmt.executeQuery("select * from test"); uprs.absolute(4); uprs.deleteRow();批處理 con.setAutoCommit(false); 關閉自動認可模式 Statement stmt=con.createStatement(); int[] rows; stmt.addBatch("insert into test values(1001,xuzhaori)"); stmt.addBatch("insert into test values(1002,xuyalin)"); rows=stmt.executeBatch(); con.commit(); 沒有任何錯誤,執行批處理stmt.executeBatch();JNDI-數據源(Data Source)與連接池(Connection Pool) Tomcat的JDBC數據源設置 技術手冊P439 連接池工具-Proxool Var 0.8.3 技術手冊P446 設置web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!--<?xml version="1.0" encoding="GB2312"?>--><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> …. <servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class><init-param> <param-name>propertyFile</param-name> <param-value>WEB-INF/classes/Proxool.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 后端統計端口添加下列 <servlet> <servlet-name>Admin</servlet-name> <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class> </servlet><servlet-mapping> <servlet-name>Admin</servlet-name> <url-pattern>/Admin</url-pattern> </servlet-mapping>….</web-app>配置Proxool.properties jdbc-0.proxool.alias=JSPBook jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/sample_db?user=root&password=browser&useUnicode=true&characterEncoding=UTF-8 jdbc-0.proxool.maximum-connection-count=10 jdbc-0.proxool.prototype-count=4 jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE jdbc-0.proxool.verbose=true jdbc-0.proxool.statistics=10s,1m,1d 后端統計接口添加此行 jdbc-0.proxool.statistics-log-level=DEBUG 使用Proxool連接池 Connection con = DriverManager.getConnection("proxool.JSPBook"); Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String query = "SELECT * FROM employee"; ResultSet rs = stmt.executeQuery(query);
?
JDBC事務提交和回滾示例
以下是使用事務提交和回滾描述的例子。基于對環境和數據庫安裝在前面的章節中做此示例代碼已學習過。復制過去下面的例子中JDBCExample.java,編譯并運行,如下所示://STEP 1. Import required packages import java.sql.*;public class JDBCExample {// JDBC driver name and database URLstatic final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/EMP";// Database credentialsstatic final String USER = "username";static final String PASS = "password";public static void main(String[] args) {Connection conn = null;Statement stmt = null;try{//STEP 2: Register JDBC driverClass.forName("com.mysql.jdbc.Driver");//STEP 3: Open a connectionSystem.out.println("Connecting to database...");conn = DriverManager.getConnection(DB_URL,USER,PASS);//STEP 4: Set auto commit as false.conn.setAutoCommit(false);//STEP 5: Execute a query to create statment with// required arguments for RS example.System.out.println("Creating statement...");stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);//STEP 6: INSERT a row into Employees tableSystem.out.println("Inserting one row....");String SQL = "INSERT INTO Employees " +"VALUES (106, 20, 'Rita', 'Tez')";stmt.executeUpdate(SQL); //STEP 7: INSERT one more row into Employees tableSQL = "INSERT INTO Employees " +"VALUES (107, 22, 'Sita', 'Singh')";stmt.executeUpdate(SQL);//STEP 8: Commit data here.System.out.println("Commiting data here....");conn.commit();//STEP 9: Now list all the available records.String sql = "SELECT id, first, last, age FROM Employees";ResultSet rs = stmt.executeQuery(sql);System.out.println("List result set for reference....");printRs(rs);//STEP 10: Clean-up environment rs.close();stmt.close();conn.close();}catch(SQLException se){//Handle errors for JDBC se.printStackTrace();// If there is an error then rollback the changes.System.out.println("Rolling back data here....");try{if(conn!=null)conn.rollback();}catch(SQLException se2){se2.printStackTrace();}//end try }catch(Exception e){//Handle errors for Class.forName e.printStackTrace();}finally{//finally block used to close resourcestry{if(stmt!=null)stmt.close();}catch(SQLException se2){}// nothing we can dotry{if(conn!=null)conn.close();}catch(SQLException se){se.printStackTrace();}//end finally try}//end trySystem.out.println("Goodbye!"); }//end mainpublic static void printRs(ResultSet rs) throws SQLException{//Ensure we start with first row rs.beforeFirst();while(rs.next()){//Retrieve by column nameint id = rs.getInt("id");int age = rs.getInt("age");String first = rs.getString("first");String last = rs.getString("last");//Display valuesSystem.out.print("ID: " + id);System.out.print(", Age: " + age);System.out.print(", First: " + first);System.out.println(", Last: " + last);}System.out.println();}//end printRs() }//end JDBCExample現在讓我們來編譯上面的例子如下: C:\>javac JDBCExample.java C:\> 當運行JDBCExample,它會產生以下結果:C:\>java JDBCExample Connecting to database... Creating statement... Inserting one row.... Commiting data here.... List result set for reference.... ID: 100, Age: 18, First: Zara, Last: Ali ID: 101, Age: 25, First: Mahnaz, Last: Fatma ID: 102, Age: 30, First: Zaid, Last: Khan ID: 103, Age: 28, First: Sumit, Last: Mittal ID: 106, Age: 20, First: Rita, Last: Tez ID: 107, Age: 22, First: Sita, Last: Singh Goodbye! C:\>
?老師的例子:
| JdbcDemo.java package jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException;public class JdbcDemo {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub String username = "test";String password = "123456";String url = "jdbc:oracle:thin:@localhost:1521:orcl";//localhost 127.0.0.1 orclConnection conn = null;try {Class.forName("oracle.jdbc.driver.OracleDriver"); //加載驅動conn = DriverManager.getConnection(url,username,password); /* //String sql = "insert into demo(id,name,sex,address,birthday)values(2,'張三1','1','南京1',to_date('2014-12-12','yyyy-mm-dd'))"; int id = 3;String name = "李四";String sex = "1";String address = "北京";String birthday = "2012-12-12";String sql = "insert into demo(id,name,sex,address,birthday) values("+id+",'"+name+"','"+sex+"','"+address+"', to_date('"+birthday+"','yyyy-mm-dd'))";System.out.println(sql);Statement st = conn.createStatement();st.executeUpdate(sql);sql = "delete from demo where id="+id;*//*String sql = "select id,name,sex,address, to_char(birthday,'yyyy-mm-dd') birthday from demo";Statement st = conn.createStatement();ResultSet rs = st.executeQuery(sql);while(rs.next()){int id = rs.getInt("id");String name = rs.getString("name");String sex = rs.getString("sex");String address = rs.getString("address");String birthday = rs.getString("birthday");System.out.println(id);}rs.close();st.close();conn.close();*/ /* int id = 4;String name = "李四";String sex = "1";String address = "北京";String birthday = "2012-12-12";String sql = "insert into demo(id,name,sex,address,birthday) values(?,?,?,?,to_date('"+birthday+"','yyyy-mm-dd'))";PreparedStatement pst = conn.prepareStatement(sql);pst.setInt(1, id);pst.setString(2, name);pst.setString(3, sex);pst.setString(4, address);pst.executeUpdate();*///1.手動提交conn.setAutoCommit(false);int id = 6;String name = "李四";String sex = "1";String address = "北京";String birthday = "2012-12-12";String sql = "insert into demo(id,name,sex,address,birthday) values(?,?,?,?,to_date('"+birthday+"','yyyy-mm-dd'))";PreparedStatement pst = conn.prepareStatement(sql);pst.setInt(1, id);pst.setString(2, name);pst.setString(3, sex);pst.setString(4, address);pst.executeUpdate();id = 7;sql = "insert into demo(id,name,sex,address,birthday) values(?,?,?,?,to_date('"+birthday+"','yyyy-mm-dd'))";pst = conn.prepareStatement(sql);pst.setInt(1, id);pst.setString(2, name);pst.setString(3, sex);pst.setString(4, address);pst.executeUpdate();conn.commit();} catch (ClassNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch(SQLException sqle){sqle.printStackTrace();try {conn.rollback(); //回滾} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}}}} ? | ConnDB.java package jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class ConnDB {private String username = "test";private String password = "123456";private String url ="jdbc:oracle:thin:@localhost:1521:orcl";private Connection conn;public Connection getConn() {try {Class.forName ("oracle.jdbc.driver.OracleDriver");conn = DriverManager.getConnection (url,username,password);} catch (ClassNotFoundException e) { e.printStackTrace();} catch(SQLException sqle){sqle.printStackTrace();}return conn;}} ? | DemoDao.java package jdbc.dao;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map;import jdbc.ConnDB; import jdbc.pojo.Demo;public class DemoDao {/*** 新增* @param demo*/public void add(Demo demo){ConnDB db = new ConnDB();Connection conn = db.getConn();String sql = "insert into demo(id,name,sex,address,birthday)values(?,?,?,?,to_date('"+demo.getBirthday()+"','yyyy-mm-dd'))";try {PreparedStatement pst = conn.prepareStatement(sql);pst.setInt(1, demo.getId());pst.setString(2, demo.getName());pst.setString(3, demo.getSex());pst.setString(4, demo.getAddress());pst.executeUpdate();pst.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}}public void update(Demo demo){ConnDB db = new ConnDB();Connection conn = db.getConn();String sql = "update demo set name=?,sex=?,address=?,birthday= to_date('"+demo.getBirthday()+"','yyyy-mm-dd') where id=?";try {PreparedStatement pst = conn.prepareStatement(sql);pst.setString(1, demo.getName());pst.setString(2, demo.getSex());pst.setString(3, demo.getAddress());pst.setInt(4, demo.getId());pst.executeUpdate();pst.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}} public void delete(int id){ConnDB db = new ConnDB();Connection conn = db.getConn();String sql = "delete from demo where id=?";try {PreparedStatement pst = conn.prepareStatement(sql); pst.setInt(1, id); pst.executeUpdate(); pst.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}}public Demo getDemoById(int id){ConnDB db = new ConnDB();Connection conn = db.getConn();Demo demo = new Demo();String sql = "select id,name,sex,address, to_char(birthday,'yyyy-mm-dd') birthday from demo where id=?";try {PreparedStatement pst = conn.prepareStatement(sql); pst.setInt(1, id);ResultSet rs = pst.executeQuery();if(rs.next()){demo.setId(rs.getInt("id"));demo.setName(rs.getString("name"));demo.setSex(rs.getString("sex"));demo.setAddress(rs.getString("address"));demo.setBirthday(rs.getString("birthday"));} pst.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}return demo;}public Map getDemoMap(int id){Map hm = new HashMap();ConnDB db = new ConnDB();Connection conn = db.getConn();Demo demo = new Demo();String sql = "select id,name,sex,address, to_char(birthday,'yyyy-mm-dd') birthday from demo where id=?";try {PreparedStatement pst = conn.prepareStatement(sql); pst.setInt(1, id);ResultSet rs = pst.executeQuery();if(rs.next()){hm.put("id",rs.getInt("id"));hm.put("name",rs.getString("name"));hm.put("sex",rs.getString("sex"));hm.put("address",rs.getString("address"));hm.put("birthday",rs.getString("birthday"));} pst.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}return hm;}public List getAllDemo(){List list = new ArrayList();ConnDB db = new ConnDB();Connection conn = db.getConn();Demo demo;String sql = "select id,name,sex,address, to_char(birthday,'yyyy-mm-dd') birthday from demo";try {PreparedStatement pst = conn.prepareStatement(sql); ResultSet rs = pst.executeQuery();while(rs.next()){demo = new Demo();demo.setId(rs.getInt("id"));demo.setName(rs.getString("name"));demo.setSex(rs.getString("sex"));demo.setAddress(rs.getString("address"));demo.setBirthday(rs.getString("birthday"));list.add(demo);} pst.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}return list;}public static void main(String[] args){Demo demo = new Demo();/*demo.setId(8);demo.setName("張炸1");demo.setSex("0");demo.setAddress("上海1");demo.setBirthday("2012-2-2");*/DemoDao dd = new DemoDao();Map hm = dd.getDemoMap(2);System.out.println(hm.get("name"));List list = dd.getAllDemo();Iterator itr = list.iterator();while(itr.hasNext()){demo = (Demo)itr.next();//System.out.println(demo.getName()); }}} ? | Demo.java package jdbc.pojo;public class Demo {private int id;private String name;private String sex;private String address;private String birthday;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}}? |
?
posted on 2014-12-19 10:41 1iqueen 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lkboy/p/4173375.html
總結
以上是生活随笔為你收集整理的[Java]jdbc[转]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络游戏服务器端架构设计(转载)
- 下一篇: Java编译器、JVM、解释器