JDBC就是连接java程序和数据库的一个接口,JDBC支持基本的sql语句,可实现mysql、sql sever和oracle数据库接口。是有sun公司定义,数据库厂商以驱动程序实现的一个协议。JDBC的功能主要有以下几个方面:
1. 可以连接数据库,提供java到数据库的连接,实现了一个沟通桥梁的作用;
2. 可以通过sql标准命令语言来操作数据库,实现增删改查的功能;
3. 可以提供对结果集的封装和处理;
4. 支持事务的操作
访问数据库的过程
1. 注册驱动
DrivaterManager.registeDriver(new com.mysql.jdec.Driver());这段代码可以注册加载驱动程序,但从java.5.0以后,该静态代码块就已经注册了,在类运行时刻自行加载,因此该步骤可以省略不写。
2. 加载驱动程序
DiverManager.registerDiver(driver);
3. 建立连接
Connection con = DriverManager.getConnection(url,user,password);
Connction是java.sql.Connection的实现类,但具体是返回哪个类是由驱动决定的,也就是说我们虽然注册的是mysql的驱动,但返回的却是mysql中的Connection,查看源码。
常用mysql的url地址:jdbc:mysql//localhost:3306/sid
注:sid就是需要连接的库名
4. 创建Statement对象
Statement st = con.createStatement();
下面是常用到的一些方法及其作用:
Statement createStatement();创建Statement对象,Statement对象可以向数据库发送sql语句
PewparedStatement prepareStatement(String sql);在程序中编译sql语句, 可以减轻数据库服务器压力, 以及提高程序安全性.
CallableStatement prepareCall(String sql)
调用存储过程, 存储过程是数据库中的一组编译好的sql语句, 类似于Java中的函数
ResultSet executeQuery(String sql)
执行查询语句, 返回结果集;
int executeUpdate(String sql)
执行插入, 修改, 删除语句, 返回影响行数;
boolean execute(String sql)
执行任意sql语句, 返回执行是否成功;
void addBatch( String sql )
将sql语句添加到命令列表;
int[] executeBatch()
运行命令列表, 返回每一个命令影响的行数;
4. 处理结果
如果是查询:那么获取ResultSet对象,进行返回记录的相应操作
ResultSet rs = st.executeQuery(sql)
boolean next()
尝试将指针向下移动一行, 返回是否成功
Object getObject(String columnName)
当指针指向某一条记录之后, 可以根据列号或者列名获取某一列的数据, 由于数据库中可以存放多种类型数据, 所以返回Object
ResultSet除了大量get方法外还有一些控制指针移动的方法
boolean next()
尝试将指针向后移动一行, 返回是否成功
boolean previous()
尝试将指针向前移动一行, 返回是否成功
boolean absolute(int row)
尝试将指针移动到指定行, 返回是否成功
void beforeFirst()
将指针移动到第一行以前
void afterLast()
将指针移动到最后一行以后
5.释放资源
rs.close()
st.close()
conn.close()
操作方法:
CREATE(增):
CreateStatement st = conn.createStatement();
String sql = "insert into user(name,password,email,birthday) values('zl','111111','zl@itcast.cn','2011-2-19')";
st.executeUpdate(sql);Retrieve
RETRIEVE(查):
Statement st = conn.createStatement();
String sql = "select id,name,password,email,birthday from user";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
System.out.print(rs.getInt(1) + "\t");
System.out.print(rs.getString(2) + "\t");
System.out.print(rs.getString(3) + "\t");
System.out.print(rs.getString(4) + "\t");
System.out.println(rs.getDate(5) + "\t");
}
UPDATE(改):
Statement st = conn.createStatement();
String sql = " update user set password='123456' where id=4";
st.executeUpdate(sql);
DELETE(删):
Statement st = conn.createStatement();
String sql = " delete from user where id='4'";
st.executeUpdate(sql);