黑马程序员:JDBC学习笔记

                          -------android培训java培训、期待与您交流! ----------

 

                                      JDBC学习笔记

 

目标:
1、知道什么是JDBC。
2、理解JDBC原理、知道什么是JDBC驱动。
3、知道JDBC的功能。
4、掌握JDBC中几个重要类的使用:Connection、Statement、ResultSet。
5、理解JDBC操作数据库的一般步骤。
6、掌握SQLException的异常处理。
7、理解数据库事务、JDBC对事务的支持、以及JDBC事务的原理和如何使用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)
);

insert     into 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 staticvoid 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 staticvoid 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

 

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值