国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

JDBC的幾個步驟

2019-11-15 00:55:57
字體:
供稿:網(wǎng)友
JDBC的幾個步驟

JDBC:java訪問數(shù)據(jù)庫的解決方案。幾個步驟:1.加載驅(qū)動類;      2.與數(shù)據(jù)庫建立連接;    3.執(zhí)行SQL語句      4.處理結(jié)果集      5.關(guān)閉連接1. 第一步:加載驅(qū)動類:  需要注意:不同的數(shù)據(jù)庫,參照的字符串不同,Oracle的連接為:Class.forName("oracle.jdbc.driver.OracleDriver"); 這一步執(zhí)行后,程序可能會拋出: ClassNotFoundException,原因一般有:a. 數(shù)據(jù)庫的驅(qū)動jar包沒有導(dǎo)入到環(huán)境變量中b. Class.forName中的字符串拼寫不正確2. 第二步:通過DriverManager與數(shù)據(jù)庫建立連接: 其靜態(tài)方法getConnection用來獲取連接。通常需要傳入三個參數(shù) 參數(shù)1:數(shù)據(jù)庫的地址及端口(不同數(shù)據(jù)庫字符串內(nèi)容不相同) oracle的地址:jdbc:oracle:thin:@host:port:sid 參數(shù)2:數(shù)據(jù)庫的用戶名 參數(shù)3:數(shù)據(jù)庫對應(yīng)用戶名的密碼 Connection conn = DriverManager.getConnect ("jdbc:oracle:thin:@host:port:oracle","user", "3.第三步:java.sql.Statement 執(zhí)行SQL語句并獲取結(jié)果Statement state = conn.createStatement();String sql="/*這里面是SQL語句*/ ";Statement針對不同的SQL語句提供了不同的執(zhí)行方法:ResultSet executeQuery(String sql)   * 該方法專門用來執(zhí)行DQL語句,返回的ResultSet表示查詢出來的結(jié)果集int executeUpdate(String sql)  * 該方法專門用來執(zhí)行DML語句,返回的數(shù)字表示執(zhí)行該語句影響了表中多少條數(shù)據(jù)boolean execute(String sql)  * 該方法理論上什么語句都可以執(zhí)行了,但是由于DQL,DML都有專門的方法執(zhí)行了,所以該方法通常用來執(zhí)行DDL語句ResultSet rs = state.executeQuery(sql);輸出查詢結(jié)果:while(rs.next())

        {輸出語句} ResultSet提供用于遍歷結(jié)果集的方法:boolean next()  *該方法有兩個作用,首先當(dāng)我們查詢出結(jié)果集后rs的指針指向第一條數(shù)據(jù)之上,所以我們需要先調(diào)用一次next()使其指針移動到第一條數(shù)據(jù)上并表示該條數(shù)據(jù)。第二個作用是看返回值,若指針向下移動后,發(fā)現(xiàn)沒有數(shù)據(jù)了,會返回false,若有則返回true,所以我們只有在該方法返回true的情況下才獲取當(dāng)前記錄的各個字段對應(yīng)的值RS還提供了若干個getXXX(String fieldName)方法:  *這一系列方法是用來獲取RS表示的當(dāng)前記錄中給定字段對應(yīng)的值。不同的字段由于類型不同需要調(diào)用相對應(yīng)的方法第4步:關(guān)閉連接,寫在finally塊中finally{if(conn!=null){try {conn.close();} catch (SQLException e) {e.PRintStackTrace();}}}

將數(shù)據(jù)庫的連接放在一個工具類里面,達(dá)到重用的效果由于訪問數(shù)據(jù)庫是經(jīng)常要用到的操作,所以在工程中,通常編寫一個訪問數(shù)據(jù)庫的工具類,此后所有訪問數(shù)據(jù)庫的操作,都從工具類中獲取連接,實現(xiàn)工具類的兩種方式:1.直接把數(shù)據(jù)配置寫在工具類DBUtil中2.把數(shù)據(jù)庫配置寫在一個properties屬性文件里,工具類讀入屬性文件,逐行獲取數(shù)據(jù)庫參數(shù)(一般使用第二種) 若使用第一種方法,在后期需要修改所使用的數(shù)據(jù)庫或者說修改host、端口、數(shù)據(jù)庫連接名、密碼等等時,就需要修改源代碼里面的數(shù)據(jù),不便于系統(tǒng)的維護,故一般使用第二種方法 數(shù)據(jù)庫連接工具類DBUtil.java以及連接池的主要步驟: Properties prop = new Properties(); prop.load(new FileInputStream("config.properties"));//根據(jù)配置項初始化String driverName = prop.getProperty("driverName");String url = prop.getProperty("url");String username = prop.getProperty("username");String passWord = prop.getProperty("password");//最大連接數(shù) int maxActive = Integer.parseInt(prop.getProperty("maxActive"));//最大等待時間int maxWait = Integer.parseInt(prop.getProperty("maxWait"));//初始化連接池cp = new BasicDataSource();//相當(dāng)與是Class.forName()中的內(nèi)容cp.setDriverClassName(driverName);cp.setUrl(url);cp.setUsername(username);cp.setPassword(password);cp.setMaxActive(maxActive);cp.setMaxWait(maxWait);public static Connection getConnection() throws Exception{return cp.getConnection();}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 三河市| 纳雍县| 商丘市| 钟山县| 双流县| 玛沁县| 孟州市| 健康| 分宜县| 交口县| 中西区| 迁安市| 南昌市| 湖州市| 天柱县| 五家渠市| 岗巴县| 武清区| 延寿县| 汝南县| 义马市| 轮台县| 花垣县| 石首市| 贡觉县| 永善县| 潼关县| 慈溪市| 枣阳市| 泊头市| 浦县| 宣化县| 连平县| 台东县| 南通市| 禹州市| 水富县| 曲阳县| 若羌县| 广西| 乌审旗|