MySQL之JDABC(一)

11 篇文章 0 订阅

JDBC

1.介绍
JDBC定义了一套规范标准,它对应的是各种接口与抽象类(通常对应java.sql包下面的各种类与接口),具体实现交给各数据库厂商去完成, MySQL的有自己的实现类并打成jar包发布,供程序开发人员使用;Oracle也有自己的实现jar包。
我们开发人员在使用的时候,要根据连接数据库的不同,去对应的官网上下载对应数据库版本与程序语言的数据库驱动(Java语言对应的是一个jar包)。(比如我们使用MySQL 5.1,就要去MySQL官网下载Java语言对应的jar包)

JDBC : Java DataBase Connectivity (java数据库链接)
是让java链接数据库的API
API : Application Programming Intergace (应用程序接口)
就是函数库
所以 JDBC 就是提供java连接数据库的应用程序接口的,只是接口或者抽象类
而JDBC就是java中提供的一个规范,基本都是接口和抽象类作为父类,具体的实现,是数据库厂商去弄的,只不过这些厂商需要按照我的接口标准来实现
如果我们要想操作数据库,就需要把厂商开发的实现类,导入进来
然后在项目上右键 -> Build Path -> Configure Build Path…,将之加入我们项目的CLASSPATH。
2. JDBC使用步骤
第0步: 导包
第1步:注册驱动 (仅仅做一次)

Class.forName("com.mysql.jdbc.Driver");

第2步:建立连接(Connection)

Connection conn=DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/_06_","root","root");

第3步:创建运行SQL的语句(Statement)

String sql ="select * from test";
Statement stmt= conn.createStatement();

第4步:运行语句
Result rs = stmt.executeQuery(sql);
第5步:处理运行结果(ResultSet)

while (rs.next()) {
			//  在循环遍历中,把数据取出来
			System.out.print(rs.getInt("id") + "    ");
 		// 如果传入是整型值 就会获取对应的列,比如下面 就是获取第一列的值,不建议使用
			System.out.print(rs.getInt(1) + "    ");
			System.out.print(rs.getString("id") + "  ");
			// 字符串不能用int来接收,除非这个 字符串是纯数字
			// System.out.print(rs.getInt("name") +"    ");
			System.out.print(rs.getString("name") + "  ");
			System.out.print(rs.getString("course") + "  ");
			System.out.print(rs.getDouble("score")+"  ");
			// 3 对应的是name列,如果更改表结构,把name列放到第四位了,那么这里就获取不到name了
			// 所以 不灵活,不推荐使用
			System.out.println(rs.getString(3));
		}

第6步:释放资源

rs.close();
stmt.close();
conn.close();

其中 如果是添加,删除,更新操作,可以没有第5步,查询肯定会有第五步
3.代码优化
上面程序中,有可能会导致释放资源出现问题
比如查询语句写错了等,这时候会抛出异常,那么关闭语句就不会执行
所以我们应该使用try…catch…finally来优化一下
以刚才的练习为例,对test_jdbc表的查询进行优化

Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null ;
		try {
			// 1 加载驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2 创建数据库连接对象
			// 导包使用的都是java.sql的
			 conn = DriverManager.getConnection(
					"jdbc:mysql://127.0.0.1:3306/_06_", "root", "root");
			
			// 3 创建语句传输对象
				String sql = "select * from test_jdbc";
				 stmt = conn.createStatement();
				
				// 4 接收数据库结果集
				 rs = stmt.executeQuery(sql);
				while (rs.next()) {
					//  在循环遍历中,把数据取出来
					System.out.print(rs.getInt("id") + "    ");
					System.out.print(rs.getString("name") + "  ");
					System.out.println(rs.getDouble("money")+"  ");
				}
		
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if (rs != null) {
					rs.close();
				}
				if (stmt != null) {
					stmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值