Java培训笔记 06-Java使用JDBC连接

Connection对象

  • 一个connection对象定义了对于指定表的一个链接或会话空hi,可以执行SQL表达式并大会结果集。

  • 数据库驱动可以使用class.forName()来加载

  • 一个Connection对象有三个重要部分:①数据源的url ②用户名 ③密码

  • 使用getConnection()方法建立

class.forName("JDBCDriver Name");
Connection myConn = DriverManager.getConnection(url);

Query Statement

Statement包含了JDBC发送到数据源的操作命令或者数据源返回的数据结果相关的信息,需要在Connection对象被创建的前提下才能够使用,可以通过execute(),executeQuery(),executeUpdate()方法被执行。

  • execute()返回的是一个boolean值,且指定的SQL表达式可以被定义成String对象。
  • executeQuery()返回的是ResultSet值,明确了有多少条数据被影响到,执行DML表达式
  • executeUpdate()返回int对象,一般执行SELECT语句。
Statement mystatement = myConn.createStatement();

PreparedStatement

这是一个Java对象,代表了对一个SQL表达式的预编译。可以用来执行有参数或者无参数的SQL表达式,在一个SQL表达式被多次执行的情况下是非常有用的。它是预编译的,所以可以立即被DBMS执行。
?表示通配符或参数,可以被任何值代替。赋值可用

  • setString();
  • setInt();
  • setDouble();
  • setDate();
	public List findAccount(String firstName, String lastName)
			throws AccountDAOException {
		List<Account> results = new ArrayList<Account>();
		try {
			PreparedStatement pStmt = conn.prepareStatement("select * from test.account where first_name like ? and last_name like ?");
			pStmt.setString(1, '%' + firstName.toUpperCase() + '%');
			pStmt.setString(2, '%' + lastName.toUpperCase() + '%');

			ResultSet rs = pStmt.executeQuery();
			while (rs.next()) {
				results.add(new AccountImpl(rs.getString(1), rs.getString(2),
						rs.getString(3), rs.getString(4), rs.getFloat(5)));
			}

		} catch (SQLException e) {
			throw new AccountDAOException(AccountDAOException.ERROR_FIND_NAME,
					e);
		}
		return results;
	}

JDBC异常类型

SQLException是SQL相关的异常的始祖,主要有以下扩展:

  • BatchUpdateException
  • RowSetWarning
  • SerialException
  • SQLClientInfoException
  • SQLNonTransientException
  • SQLRecoverableException
  • SQLTransientException
  • SQLWarning
  • SyncFactoryException
  • SyncProviderException

事务

设置Connection.autocommit(false)将会预防表达式或数据在得到明确的Connection.commit()指示之前被提交。
如果一个事件请求的变更长时间没有被确定,Connection.rollback()方法会被执行。

··(tab上面那个键)可用于区分mysql中的保留字

mysql大小写敏感问题

两个参数,lower_case_file_system 和 lower_case_table_names。
查看配置的命令

show global variables like '%lower_case%';

lower_case_file_system:表示当前系统文件是否大小写敏感,只读参数,无法修改。

lower_case_file_systemValue
ON大小写不敏感
OFF大小写敏感

lower_case_table_names:表示表名是否大小写敏感,可以修改。

lower_case_table_namesValue
0mysql会根据表名直接操作,大小写敏感。
1mysql会先把表名转为小写,再执行操作。

DataSource

是SUN制定的用于获取数据库连接的规范接口。它存在于 javax.sql包中,用来代替 DriverManager 的方式获取连接。是connection类型。
DataSource 与 DriverManager 获取连接的不同在于,后者是由SUN实现的,它只供了最基本的获取连接的方式。而DataSource是一个接口,不光SUN可以实现,很多第三方的中间件也可以很好地实现。
DataSource一般有如下三种实现方式:

  1. 标准实现:提供最基本的连接,也就是DriverManager的方式
  2. 连接池的实现:提供了连接池,是一种可以缓存及管理多个数据库连接的“容器”。
  3. 分布事务的实现 – 提供了连接池,而且这个池中的连接是支持分布式事务的(Distribute Transaction)。

package结构

  • impl :全称为implement,表示实现的意思,通常处于controller层的service下,用来存放接口的实现类
  • JavaBean: 是一种JAVA语言写成的可重用组件,它是一个具体的和公共的类,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。
  • DAO:全称为Data Access Object,是进行数据操作的类,存放对于数据库中的数据做增删改查等操作的代码。数据访问对象是一个面向对象的数据库接口,最适用于单系统应用程序或小范围本地分布使用。DAO层一般有接口和该接口的实现类,接口用于规范实现类,实现类一般用于用于操作数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值