JDBC与数据库访问
JDBC(Java DataBase Connectivity, java的数据库连接)是一种用于执行SQL语句的java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。
JDBC的体系结构分为5层:应用程序、JDBC API、JDBC驱动管理员、JDBC驱动程序和数据库。
JDBC 驱动程序
JDBC-ODBC桥
本地API
网络纯Java驱动程序
本地协议纯Java驱动程序
JDBC基本组件
- 加载驱动程序。为数据库管理系统加载一个JDBC驱动程序。通过Class.forName()方法调用来完成这一操作,需要给出驱动类的名称。
- 打开数据库连接。使用驱动程序打开特定数据库的连接。
- 获得Statement对象。
- 执行SQL语句。通过Statement提出SQL请求。
- 处理结果集。结果返回结果集则对结果集进行处理。
数据访问代码
在这里插入代码片
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序
Connection con = DriverManager.getConnection("jdbc:odbc:student","user","password");//打开数据库连接
Statement stmt = con.cresteStatement();//获取Statement对象
ResultSet rs = stmt.executeQuery("select a,b,c from table");//执行SQL语句
while (rs.next()){
int x = rs.getInt{"a"};
String s = rs.getString("b");
float f = rs.getFloat("c");
}
访问数据库详细过程
- 加载驱动程序
- 建立连接
- 获得Statement
- 执行SQL语句
- 处理结果集
public class StudentSQL{
public static void main (String [] args){
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String strTemp = "";
//加载驱动
try{
Class.forName(""sun.jdbc.odbc.JdbcOdbcDriver);
}
catch(ClassNotFoundException e){}
//建立数据库连接
try{
con = DriverManager.getConnection("jdbc:odbc:student","","");
stmt = con.createStatement();
}catch(SQLException ee){}
//建立表
strTemp = "create table student (id test(20) primary key,name text(20),gender text(0),address text(50),phone text(20),major text(30))";
try{
stmt.executeUpdate(strTemp);
}catch (SQLException e){
e.printStackTrace();
}
//添加数据
strTemp = "insert into student values ('xxxxx','测试','性别','地址','电话','身份证号')";
try{
stmt.excuteUpdate(strTemp);
}catch (SQLException e){
e.printStackTrace();
}
//获取并浏览数据
strTemp="select * from student";
try{
rs = stmt.executeQuery(strTemp);
while(rs.next()){
System.out.println(rs.getString("id"));
System.out.println(rs.getString("name"));
System.out.println(rs.getString("gender"));
System.out.println(rs.getString("address"));
System.out.println(rs.getString("phone"));
System.out.println(rs.getString("major"));
}
}catch(SQLException e){
e.printStackTrace();
}
//释放资源
try{
rs.close();
stmt.close();
con.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
注意释放资源一般写在finally语句快中,所释放的资源一般有ResultSet,Statement和Connection。