JDBC
JDBC编程的六步
- 注册驱动
- 获取连接
- 获取数据库操作对象
- 执行sql
- 处理查询结果集
- 释放资源
/*
提供了注册驱动的第一种方式
*/
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
public class JDBCTest01{
public void main(String[] args){
Connection con = null;
Statement st = null;
try{
//注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.getRegister(driver);
//获取数据库操作对象
String url = "127.0.0.1:3306/bjpowernode"; //其中bjpowernode是数据库中的表名
String user = "root";
String passwd = "123456";
con = DriverManager.getConnection(url,user,passwd);
//获取数据库操作对象
st = con.CreateStatement();
//执行sql
String sql = "insert into dept(deptno,dname,loc values(150,'人事部','北京'))";
int count = st.executeUpdate(sql);
System.out.println(count == 1 ? "操作成功":"失败");
}catch(SQLException e){
e.printStackTrace();
}finally{
//释放资源,遵循从小到大依次关闭
try{
if(st != null){
st.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(con != null){
con.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
/*
1、提供注册驱动的第二种方式:类加载的方式
加载类中的静态方法+使用反射机制
2、通过资源绑定器绑定属性配置文件来获取url、user、passwd等相关信息
*/
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.util.*;
public class JDBCTest02{
public void main(String[] srgs){
//使用资源绑定器绑定属性配置文件(jdbc.properties)
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String url = bundle.getString("url");
String user = bundle.getString("user");
String passwd = bundle.getString("passwd");
//变量声明
Connection con = null;
Statement st = null;
ResultSet rs = null;
try{
// 1、注册驱动
Class.forName("com.sql.jdbc.Driver");
// 2、获取连接
con = DriverManager.getConnection(url,user,passwd);
// 3、获取数据库操作对象
st = con.createStatement();
// 4、执行sql
String sql = "select empno as no,ename as name,sal as s from emp";
rs = st.executeQuery(sql); //此处是查询,注意是Query
// 5、处理查询结果集
while(rs.next != false){
String empno = rs.getString("no"); //可以使用别名获取数据
String ename = rs.getString("name");
String sal = rs.getString("s");
//参数写数字也可
//String empno = rs.getString(1);
//String ename= rs.getString(2);
//String sal = rs.getString(3);
System.out.println(empno + ","+ename+","+sal);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(st != null){
st.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(con != null){
con.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
关于结果集(ResultSet)的说明:
1、对于执行了DQL(Data Query Language),才有查询结果集
2、对于next(),最开始指向第一行数据的上面一个位置,执行了rs.next()之后才指向了第一条记录
3、getString()的特点:不管数据库中的数据是什么类型,取出来的数据都是字符串形式的;同理, getInt()取出来额就是int类型的。
4、getString()这个方法的参数:不仅可以是数字,还可以是列名,如果对列进行了重命名,需要写新的名字。
其中jdbc.properties属性配置文件的内容如下:(bjpowernode是数据库中的表名)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/bjpowernode
user=root
password=12456