獲取數據庫的連接,步驟:
在程序當中要操作數據庫,第一步應該將對應數據庫的驅動包拷貝到項目中
2.獲取連接:
口訣:賈璉欲執事(賈璉是紅樓夢中的人物,是王熙鳳的丈夫,王熙鳳很強勢,因此。。。不過這個口訣跟Java沒多大聯繫,純屬是爲了方便記憶)
1).加載註冊驅動(賈)
Class.forName(“驅動類的全限定名”)
2).獲取連接對象(璉)
Connection conn = DriverManager.getConnection(String url, String name, String password);
3).創建語(欲)句對象(執行靜態sql(寫死)的語句對象)
Statement st = conn.createStatement();
4).執(執)行sql語句(該方法可以執行DML和DDL語句),返回受影響的行數,若是DQL語句(操作更復雜一點),就用executeQuerey()方法
int ret = st.executeUpdate();
5).釋(事)放資源(先開的後關)
st.close();
conn.close();
上代碼:
使用JDBC連接數據庫並創建一張表(沒有處理異常)
@Test
public void testConnection() throws Exception {
String sql = "CREATE TABLE s_student (id BIGINT primary key AUTO_INCREMENT,name varchar(20),age int)";
//1.加載註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.獲取數據庫連接
//Connection conn = DriverManager.getConnection(String url, String name, String password);
//url格式:jdbc:mysql://主機ip:端口號/數據庫名 (端口號默認3306,可不寫,若是在本地連接,可寫成 jdbc:mysql:///數據庫名
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hcd", "root","");
//3.創建語句對象
Statement st = conn.createStatement();
//4.執行sql語句
st.executeUpdate(sql);
//5.釋放資源(遵循先開後關原則)
st.close();
conn.close();
}
使用JDBC連接數據庫並創建一張表(處理異常)
@Test
public void testGetConnectionHanlderException() {
//賈璉欲執事
String sql = "CREATE TABLE t_student (id BIGINT primary key auto_increment,name varchar(20),age int)";
Connection conn = null;
Statement st = null;
try {
//1.加載註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.獲取數據庫連接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hcd", "root", "");
//3.創建sql語句對象
st = conn.createStatement();
//4.執行sql語句
st.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}finally{
//5.釋放資源
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
從上一個例子中,我們可以看到,關閉資源的代碼看着很繁瑣,Java7中增添了一個方式去自動關閉資源,即在try後面加上一個圓括號(),我們只需將打開的資源放到圓括號中,代碼執行完之後就會自動關閉資源。
不說了,繼續上代碼:
@Test//Java7新特性
public void testConnectionHanlderExceptionByJava7() {
String sql = "create table t_student (id bigint primary key auto_increment,name varchar(20),age int)";
try(
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hcd", "root", "");
Statement state = conn.createStatement();
)
{
state.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}