最近開始復習JAVASE,下面就看看一些之前忘記的點。
JDBC訪問數據庫是之前自己比較迷糊的,現在正好來復習一下。數據庫連接首先要有一個JDBC驅動程序,還要有一個數據庫,這里兩者不屬於JAVA的知識,不再介紹。就只是介紹JDBC編程。
JDBC編程有6步,分別是1.加載sql驅動,2.使用DriverManager獲取數據庫連接,3.使用Connecttion來創建一個Statement對象 Statement對象用來執行SQL語句,4.執行SQL語句,5.操作結果集,6.回收數據庫資源。以上就是大部分JDBC編程的步驟,也可以看自己的情況減少自己的步驟。因為是復習,所以代碼中的注釋還是比較多的。這里就不再累述了。代碼如下:
package JDBCtrain; import java.sql.*; public class demo1 { public static void main(String[] args) throws Exception { // 1.加載sql驅動 // 加載驅動,利用反射知識 Class.forName("com.mysql.jdbc.Driver"); try ( /* * 2.使用DriverManager獲取數據庫連接 返回的conn代表着java程序和數據庫的連接 這里要注意導入的包, * 這里還是要注意root@localhost和root@'127.0.0.1'是兩個不同用戶。還有就是賬戶和密碼的問題 * Access denied for user '123'@'localhost' (using password: YES) 就是密碼出錯 */ Connection conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/javatrain", "123", "123456"); /* * 3.使用Connecttion來創建一個Statement對象 Statement對象用來執行SQL語句 */ Statement stmt = conn.createStatement(); /* * 4.執行SQL語句 * Statement有三種執行SQL語句的方式 * (1)executeQuery(sql) 執行select語句,返回查詢到的結果集 * (2)execute(sql) 可執行任何的SQL語句,返回一個boolean值 * 如果執行第一個結果是ResultSet,返回true,否則返回false * (3)executeUpdate(sql)執行DML語句,返回一個整數(代表SQL語句影響的行數) */ ResultSet rs=stmt.executeQuery("select * from demo1"); ) /* * java7的特性,可以使用try語句來自動關閉數據庫的各種資源 */ { //5.操作結果集 /* * ResultSet就是返回的結果集,get()是獲得特定列的值 next是下一行 */ while (rs.next()) { System.out.println("姓名為:"+rs.getInt(1)+",密碼為:"+rs.getInt(2)+"。"); } } } }
下面就說一下代碼中要注意的,因為數據庫的不同,獲取數據庫連接時的代碼不一定一樣,這里我因為數據庫密碼的原因卡了好久(一定要記得自己數據庫的密碼),還有就是第六步,代碼中沒有寫出來,其實是JAVA7的特性,允許try塊中放置數據庫資源,在結束時系統會自動回收數據庫資源。這個也是企業中比較推薦的寫法。還有就是第三步,一定要注意Statement沒法防止SQL注入(常見的Cracker入侵方式,利用SQL語句的漏洞來入侵),登錄中可以使用PreparedStatement。以上就是一個簡單的例子。結束。