`
memewry
  • 浏览: 11615 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JDBC学习笔记

 
阅读更多
一、JDBC概念
JDBC是SUN公司定义的Java操作数据库的规范(一系列接口)。通过JDBC可以操作任何的关系数据库(前提是有具备数据库JDBC驱动程序)
JDBC是SUN公司注册的一个技术商标。
JDBC的全称是Java Database Concetivty,意思是Java数据库连接。
二、JDBC的功能
连接数据库
发送并执行SQL语句
获取处理结果
三、JDBC的原理
JDBC定义了一组操作数据库的接口,不同的数据库厂商提供了JDBC接口的实现,这个实现称为JDBC驱动。这样就可以通过JDBC接口来对不同数据库获得统一的操作。
四、JDBC中关键的几个类
1、java.sql.DriverManager: 管理一组 JDBC 驱动程序的基本服务。
2、java.sql.Connection: 与特定数据库的连接(会话)。
3、java.sql.Statement: 用于执行静态 SQL 语句并返回它所生成结果的对象。
4、java.sql.ResultSet: 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
五、JDBC操作数据库的一般步骤
1、注册JDBC数据库驱动程序
2、创建数据库连接Connection
3、通过Statement向数据库发送SQL语句
4、执行SQL语句,获取返回结果。
六、实践
CREATE TABLE teacher (
id bigint(20) NOT NULL auto_increment COMMENT 'ID(自增型)',
name varchar(24) default NULL COMMENT '姓名',
salary int(11) default NULL COMMENT '薪水',
remark varchar(120) default NULL COMMENT '备注',
PRIMARY KEY(id)
);

insertinto teacher(id,name,salary,remark) values
(1,'秦老师',3000,'讲师级别'),
(2,'王老师',1700,'助教级别'),
(3,'江老师',1050,'书童级别'),
(4,'李老师',1200,'伴读级别');
import java.sql.*;

/**
* JDBC第一个测试程序
* User: xiaohui
* Date: 2008-11-221:18:07
*/

public class TestJDBC {
public static String dburl = "jdbc:mysql://localhost:3306/testdb";
public static String user = "root";
public static String password = "xiaohui";

public static void main(String args[]) throws ClassNotFoundException, SQLException {
String testsql = "select t.id,t.name,t.salary,t.remark from teacher t \n" +
"where t.salary>1500";
//1:注册驱动类
Class.forName("com.mysql.jdbc.Driver");
//2:创建数据库连接
Connection conn = DriverManager.getConnection(dburl, user, password);
//3:创建执行SQL的对象
Statement stmt = conn.createStatement();
//4:执行SQL,并获取返回结果
ResultSet rs = stmt.executeQuery(testsql);
//5:处理返回结果,此处打印查询结果
while (rs.next()) {
System.out.print(rs.getLong("id") + "\t");
System.out.print(rs.getString("name") + "\t");
System.out.print(rs.getInt("salary") + "\t");
System.out.print(rs.getString("remark") + "\t");
System.out.println();
}
//6:关闭数据库连接
conn.close();
}
}

运行结果:
1秦老师3000讲师级别
2王老师1700助教级别

Process finished with exit code 0
七、封装一个简单的JDBC工具类
import java.sql.*;

/**
* 一个简单数据库工具类
* User: xiaohui
* Date: 2008-11-221:16:21
*/

public class DBUtils {
public static String dburl = "jdbc:mysql://localhost:3306/testdb";
public static String user = "root";
public static String password = "xiaohui";

/**
* 创建一个数据库连接
*
* @return 一个数据库连接
*/

public static Connection createConnection() {
Connection conn = null;
//1:注册驱动类
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.err.println("#ERROR# :加载数据库驱动异常,请检查!");
e.printStackTrace();
}
//2:创建数据库连接
try {
conn = DriverManager.getConnection(dburl, user, password);
} catch (SQLException e) {
System.err.println("#ERROR# :创建数据库连接发生异常,请检查!");
e.printStackTrace();
}
return conn;
}

/**
* 在一个数据库连接上执行一个静态SQL语句
*
* @param conn数据库连接
* @param staticSql 静态SQL语句字符串
* @return 返回查询结果集ResultSet对象
*/

public static ResultSet executeQuery(Connection conn, String staticSql) {
ResultSet rs = null;
try {
//3:创建执行SQL的对象
Statement stmt = conn.createStatement();
//4:执行SQL,并获取返回结果
rs = stmt.executeQuery(staticSql);
} catch (SQLException e) {
System.err.println("#ERROR# :执行SQL语句,请检查!");
e.printStackTrace();//To change body of catch statement use File | Settings | File Templates.
}
return rs;
}

public static void closeConnection(Connection conn) {
try {
if (!conn.isClosed()) {
//6:关闭数据库连接
conn.close();
}
} catch (SQLException e) {
System.err.println("#ERROR# :关闭数据库连接发生异常,请检查!");
e.printStackTrace();
}
}
}
使用这个工具类
import java.sql.*;

/**
* JDBC工具类测试
* User: xiaohui
* Date: 2008-11-222:08:58
*/

public class Test {
public static void main(String args[]) throws ClassNotFoundException, SQLException {
String testsql = "select * from teacher";
Connection conn = DBUtils.createConnection();
ResultSet rs = DBUtils.executeQuery(conn, testsql);
//5:处理返回结果,此处打印查询结果
while (rs.next()) {
System.out.print(rs.getString(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();
}
DBUtils.closeConnection(conn);
}
}
运行结果:
1秦老师3000讲师级别
2王老师1700助教级别
3江老师1050书童级别
4李老师1200伴读级别

Process finished with exit code 0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics