获取数据库的连接,步骤:
在程序当中要操作数据库,第一步应该将对应数据库的驱动包拷贝到项目中
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();
}