Java学习笔记 Day05

一、基本数据库访问
1.JDBC:
概念:jdbc体系结构基于一组Java接口和类,而这些接口和类能够联合起来使编程人员连接数据源、
创建并执行SQL语句以及检索和修改数据库中的数据。

2.jdbc所提供的接口和类:
1) DriverManager:驱动程序管理器,主要用来获得与数据库的连接:
Connection getConnection(url,username,password);
参数说明:
url:连接数据库的连接字符串
username:登录数据库的账号
password:登录数据库的密码

2) Connection:表示与数据库的连接,主要用于获取执行SQL语句的预置语句对象:
PrepareStatement preparedStatement(sql)

3) PrepareStatement:预置语句执行体,主要用于执行SQL语句
int executeUpdate():执行非查询语句(INSERT、DELETE、UPDATE)
ResultSet executeQuery():执行查询语句(SELECT),返回结构集

4) ResultSet :执行查询语句之后返回的结果集
I. boolean next():将结果集记录指针移动到下一条记录,如果有记录则返回true,否则返回false,常常跟循环搭配使用
II.获取当前记录字段值的方法:getXXX(),其中XXX表示数据库中字段的类型对应java的数据类型

Java和MySQL类型映射

MySQL数据类型                Java数据类型
char/varchar                String

date                           java.sql.Date
                            java.sql.Time
                            java.sql.Timestamp

int                           short
                            int
                            long

decimal                        float
                            double

比如:String sql="select name,age from users";执行sql后得到的结果集ResultSet的对象为rs,
则String name=rs.getString(1);//1表示获取当前记录的第一列的数据,即name这一列的数据,
同时我们还可以直接使用列名来获取:int age=rs.getInt("age");//表示获取当前记录的age这一列的
数据。

3,补充知识点:异常处理
语法:
try{
    //可能发生异常的代码
}catch(异常类型1){
    //处理异常类型1
}catch(异常类型2){
    //处理异常类型2
}
...
finally{
    //无论异常发布发生,该语句块都会执行,常常用于释放资源
}

throws:抛出异常,放在方法头,表可能会发生异常,但并不一定会发生异常
public void connToDB() throws SQLException{
    
}

throw:抛出异常,放在方法体中的,使用了这个关键字,一定发生了异常
public void connToDB() {
    ...
    throw new UserException(); //代码抛出了UserException异常
    ..
}

4.jdbc访问数据库的步骤:
第一步:导入数据库驱动包:
在工程下创建一个lib文件夹,将mysql-connector-java-5.1.40-bin.jar数据库驱动包拷贝到lib文件夹下,
然后再将驱动包添加到工程的build_path下。
导入import java.sql.*;


第二步:加载并注册驱动程序:
Class.forName("com.mysql.jdbc.Driver");

第三步:定义连接字符串url:
String url="jdbc:mysql://localhost:3306/test":其中localhost表示连接本地数据库服务器,3306为
通讯端口号,test是我们要连接的数据库的名称
其中localhost:3306是默认的设置,所以可以将url简写成:
String url="jdbc:mysql:///test";

第四步:使用驱动程序管理器DriverManger的getConnection方法获得与数据库的连接
Connection conn=DriverManager.getConnection(url,username,password);

第五步:定义待执行的SQL语句:
String sql="select name,age from users where id=?";
"?"在这里代表占位符,在预置语句对象PreparedStatement执行SQL语句之前对它进行赋值,
赋值方法为:setXXX(第几个占位符,要设置的值),其中XXX表示占位符中的要设定的值的java数据类型,
第一个参数表示该占位符是第几个占位符(取值有:1,2,3,...),第二个参数为要设定的值


第六步:使用Connection对象的prepareStatement方法获得预置语句对象,并使用预置语句对象设定
占位符的值
PreparedStatement pstmt=conn.prepareStatement(sql);
//设置占位符的值
pstmt.setInt(1,1001);

第七步:使用pstmt的executeQuery方法执行SQL语句,得到结果集对象ResultSet
ResultSet rs = pstmt.executeQuery();

第八步:遍历结果集,得到数据
while(rs.next()){
    String name=rs.getString(1);//获取当前行的第一个字段的值,即name这一列的值
    int age=rs.getInt("age");//获取当前行的age这一列的值
    System.out.println(name+":"+age);
}

第九步:关闭资源
rs.close();
pstmt.close();
conn.close();


5.ResultSet的API:
通用的获得当前记录某一列值的方法:
Object getObject(int columnIndex); //获取当前记录的指定编号的列的Object类型的值
Object getObject(String columnName);//获取当前记录的指定列名的这一列的Object类型的值

获取结果集元数据信息
ResultSetMetaData rsmd=rs.getMetaData(); //ResultSetMetaData结果集的元数据信息

ResultSetMetaData结果集的元数据信息的方法:
getColumnCount():返回结果集中的列数
getColumnName(int num):返回num指定位置上的列的名称

对NULL值的处理
rs.wasNull():判断上一个取得的字段的值是否为null

6.JDBC中的事务
1).事务:把数据库从一个一致状态带到下一个一致状态。当我们在数据库中提交工作时,事务保证我们的修改
要么全部保存,要么全部不保存。

2).事务的控制语句:
提交:commit
回滚:rollback

3).JDBC驱动程序所提供的连接类将提供事务控制,当代码从DriverManger中获得一条连接时,JDBC要求该连接
处于事务自动提交模式,这意味着每条SQL语句都会被当做一个事务来对待,而且该事务会在该SQL语句执行过后
提交。

4).JDBC的事务的自动提交模式可能存在问题,JDBC通过Connection对象的SetAutoCommit(boolean)方法来决定
是否启动自动提交,若将参数设为false,则为手动提交模式,用户可以显式的调用连接对象的commit()或rollback()
方法来提交或回滚事务。


7.通用的访问数据库的工具类
DBFactory

8.JavaBean类
1.概念:被用于封装各种操作的细节,可以用来实现业务逻辑或数据访问逻辑的细节,这样就可以将软件分层:显式给
客户的是一部分,访问数据库的是一部分。

2.JavaBean类的要求:
要与所有类一样,数据成员是不能直接被访问的,要通过getter,setter方法来访问

3.JavaBean类映射数据库中数据:
1)映射表中的一条记录
2)映射一张表中的所有记录

你可能感兴趣的:(java学习笔记)