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);
}