JDBC笔记

1、应用程序和数据库之间的关系:

应用程序-->JDBC-->数据库Driver-->数据库

2、链接数据库步骤:

  (1).注册驱动(只做一次)

  (2).建立连接(Connection)

  (3).创建SQL语句(Statement)

  (4).执行语句

  (5).处理结果

  (6).释放资源

3、注册驱动的方式(mySql):

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

  2.DriverManager.registerDriver(new com.mysql.jdbc.Driver());

  3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Drive");

  推荐使用第一种方式。因为:第2种方式会生成2个Driver对象的实例。第3种方式会对数据库驱动产生依赖。

  详细原因:http://xm-king.iteye.com/blog/798331

  三种驱动方式的详细介绍:http://blog.sina.com.cn/s/blog_670c5a4001017e2e.html

4、数据库连接URL规则

  JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&属性名=属性值&...

  各种数据库连接URL总结:http://blog.youkuaiyun.com/it_yijihua/article/details/17878649

5、PreparedStatement和Statement的区别

    PreparedStatement接口继承Statement,三种方法execute()、executeQuery()和executeUpdate()已被更改不再需要参数。

  (1).最重要的一点是极大地提高了安全性。防止SQL注入。

  (2).PreparedStatement,数据库会对sql语句进行预编译,第一次执行消耗较高,但重复执行效率更高(数据库连接未关闭的前提)。

  (3).PreparedStatement代码可读性和可维护性更高。

6、大文本文件(字符流)、二进制文件(字节流)的存取

  保存

		// 存字符流
		File file1 = new File(pathname1);
		Reader reader = new BufferedReader(new FileReader(file1));
		ps.setCharacterStream(1, reader, (int) file1.length());

		// 存字节流
		File file2 = new File(pathname2);
		InputStream in = new BufferedInputStream(new FileInputStream(file2));
		ps.setBinaryStream(2, in, (int) file2.length());


 

  读取

		//读字符流
		BufferedReader br = new BufferedReader(rs.getCharacterStream("content"));
		String str = null;
		StringBuffer sb = new StringBuffer();
		while ((str = br.readLine()) != null) {
			sb.append(str + "\r\n");
		}

		//读字节流
		InputStream in = rs.getBinaryStream("pictures");
		File file = new File("src/filePack/147124064892_bak.jpg");
		OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
		byte[] buff = new byte[1024];
		for (int i = 0; (i = in.read()) > 0;) {
			out.write(buff, 0, i);
		}

字节流与字符流的区别详解:http://http://blog.youkuaiyun.com/zxman660/article/details/7875799




 

### 关于JDBC的课堂笔记与教程 #### JDBC概述 Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的 Java API,它由一组用 Java 编程语言编写的类和接口组成。此API提供了统一访问各种关系数据库的方法[^1]。 #### 快速入门指南 对于初学者来说,掌握几个核心组件是快速上手的关键: - **DriverManager**:负责管理不同类型的驱动程序并建立到特定数据库的实际连接。 - **Connection**:表示应用程序与具体数据源之间的通信链接。 - **Statement/PreparedStatement**:用来向数据库发送SQL命令的对象;后者支持预编译SQL语句以提高效率。 - **ResultSet**:保存查询返回的数据表形式的结果集。 通过这些基本要素的学习可以构建简单的CRUD(创建、读取、更新、删除)操作实例来熟悉整个流程[^2]。 #### 抽象化处理——JDBC工具类的设计思路 为了减少重复编码量以及增强代码可维护性,通常会设计一个名为`JDBCUtils`的帮助类来进行资源管理和异常捕获等工作。此类能够自动加载所需的驱动器,并提供获取连接及关闭资源等功能方法。 #### 数据库连接池技术简介 考虑到频繁创建销毁物理连接带来的开销问题,在实际项目开发过程中推荐采用数据库连接池方案。像C3P0 和 Druid 这样的第三方库就很好地解决了这个问题,其中Druid是由阿里团队开源的一款高性能连接池解决方案[^4]。 ```java // 使用Druid配置DataSource示例 import com.alibaba.druid.pool.DruidDataSource; public class DataSourceConfig { public static void main(String[] args){ DruidDataSource dataSource = new DruidDataSource(); // 设置必要的参数... try(Connection conn = dataSource.getConnection()){ System.out.println("成功获得连接!"); } catch(Exception e){ e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值