1. 程式人生 > >JDBC,JAVA連線資料庫

JDBC,JAVA連線資料庫

JAVA連線資料庫

1.新建專案,專案中新建資料夾,並將資料庫包貼上到新建資料夾中

2.選中資料庫包,右鍵 build path -->add build path

3.載入資料庫驅動

Class.forName("com.mysql.jdbc.Driver");

4.建立資料庫連線物件

String url = "jdbc:mysql://localhost:3306/資料庫名";

String user = "資料庫連線賬號";

String password = "資料庫連線賬號";

Connertion conn = DriverManager.getConnection(url,user,password);

5.建立sql語句物件

Statement st = conn.createStatement();

6.建立sql語句,並執行sql語句 返回值型別為結果集

String sql = "select * from 表名;";

ResultSet rs = st.ResultQuery(sql);

7.遍歷結果集

while(rs.next()){

int id = rs.getInt(1); 獲取第一條欄位的內容

String name = rs.getString(2);獲取第二條欄位內容

欄位是什麼型別的資料,就使用什麼型別進行接收

System.out.println(id+name); 列印獲取到的資料

}

8.關閉資料庫連線 遵循先開後關的原則

rs.close();

st.close();

conn.close();

API類庫

DriverManager:管理jdbc驅動程式的基本服務

 

常用方法:

static getConnection(String url,String user,String password);

url:連線資料庫的字串

jdbc:mysql://localhost:3306/studentdb(資料庫名)

user:mysql資料庫的賬號 :root

password:mysql資料庫的密碼 :root

返回值:Connection

Connection 介面:

常用方法:

createStatement():建立一個執行sql語句的物件:返回值:Statement

prepareStatement(String sql) 建立一個 PreparedStatement 物件來將引數化的 SQL 語句傳送到資料庫。

返回值:PreparedStatement

 

Statement : 用於執行靜態 SQL 語句並返回它所生成結果的物件。

常用方法:

executeQuery(String sql) :執行給定的 SQL 語句,該語句返回單個 ResultSet 物件。

返回值物件:ResultSet

eg: select * from student;

executeUpdate(String sql) :執行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或 DELETE 語句

PreparedStatement:表示預編譯的sql物件。

執行動態的sql語句:

select * from student where id = ? and name = ?;

?:代表佔位符

常用方法:

setInt(int parameterIndex, int x) 將指定引數設定為給定 Java int 值。

setInt(1,100); 把100的值給第一個問號

select * from student where id = 100;

 

setString(int parameterIndex,String x) :設定字串的值

setString(2,"zhangsan");

select * from student where id = 100 and name = 'zhangsan';

 

executeQuery() :在此 PreparedStatement 物件中執行 SQL 查詢: select

返回值:ResultSet 物件。

executeUpdate() :執行新增,修改,刪除的sql句:insert,update,delete

 

ResultSet: 執行查詢返回的結果集

常用方法:

next() : 是產生的結果集的下標移動一位。

getInt(int index); 獲取整形的欄位值

getString(int index);獲取字串欄位的值

getDouble(int index);獲取雙精度型別的欄位的字:錢

getDate(int index);獲取日期型別的欄位的值

getInt(String labelName); 通過欄位名獲取欄位的值

int id = getInt("id");

getString(String lableName);

String name = getString("name");

getFloat(String lableName);

float score = getFloat("score");

getDouble(Sting lableName);

double money = getDouble("money");

getDate(String labelName);

Date date = getDate("date");

 

通用方法:

close(); 釋放資源

釋放原則:先建立的後關閉,後建立先關閉。

使用PrepareStatement語句物件

載入資料庫驅動

Class.forName("com.mysql.jdbc.Driver");

建立資料庫連線

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/資料庫名","資料庫連線賬號","資料庫連線密碼");

建立SQL語句物件

PrepareStatement ps = conn.PrepareStatement("select * from 表名 where id = ? and name = ?");

為條件佔位符賦值

ps.setInt(1,2); 把2賦給第一個佔位符

ps.setString(2,"李四"); 把李四賦給第二個佔位符

執行SQL語句,並接受返回的ResultSet 結果集

ResultSet rs = ps.executeQuery();

使產生的結果集下標移動一位

rs.next();

獲取結果集中每個欄位的值

int id = rs.getInt("id");

String name = rs.getString("name");

列印獲取到的欄位值

System.out.println(id + name);

關閉資料庫連線,遵循先開後關的原則

rs.close();

ps.close();

conn.close();

 

Class類

獲取class物件的方法

1.通過呼叫從Objcet類繼承過來的getclass方法,獲取

TestClass tc = new TestClass();

Class<? extends TestClass> c1 = tc.getClass();

2.通過.class的方式獲得class物件

Class<?> c2 = TestClass.class;

基本資料型別也可以通過.class的方式獲得

Class<?> c3 = int.class;

Class<?> c4 = boolean.class;

Class<?> c5 = int[].class;

3.通過Class.forname(String className)方法獲取一個類對應的class物件

Class<?> c6 = Class.forName("com.mysql.jdbc.Driver");

4.通過包裝類的TYPE屬性獲得對應的資料型別class物件

Class<Integer> t = Integer.TYPE;

通過某一個類的Class物件獲取對應類的構造方法

Class<?> c = String.class;

獲取類的全類名

String name = c.getName();

System.out.println("全類名:"+name);

 

System.out.println();

獲取這個類的public型別的屬性,返回的是陣列型別,列印需要遍歷

Field[] fields = c.getFields();

for(Field f : fields){

System.out.println("公開的屬性:"+f);

}

 

System.out.println();

獲取這個類的所有屬性,返回時陣列,列印需遍歷

Field[] de = c.getDeclaredFields();

for(Field f : de){

System.out.println("全部屬性:"+f);

}

 

System.out.println();

獲取這個類的公開方法,返回陣列,列印需遍歷

Method[] methods = c.getMethods();

for(Method m : methods){

System.out.println("公開方法:"+m);

}

System.out.println();

獲取這個類的所有方法,返回陣列,列印需遍歷

Method[] declaredMethods = c.getDeclaredMethods();

for(Method d : declaredMethods){

System.out.println("所有方法:"+d);

}

System.out.println();

獲取這個類的公開構造器,返回陣列,列印需遍歷

Constructor<?>[] constructors = c.getConstructors();

for(Constructor co : constructors){

System.out.println("公開的構造方法:"+co);

}

System.out.println();

獲取這個類的所有構造器,返回陣列,列印需遍歷

Constructor<?>[] declaredConstructors = c.getDeclaredConstructors();

for(Constructor co : declaredConstructors){

System.out.println("所有構造方法:"+co);

}