黑马程序员
数据库操作
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
在Java程序中连接数据库主要有两种方式,一种是建立JDBC-ODBC桥接器,一种是加载纯Java数据库驱动程序。
使用JDBC-ODBC桥接器方式时,需要先建立JDBC与ODBC之间的连接,再由ODBC与数据库连接,之后就可以用Java来操作数据库了,但电脑必须装有ODBC,可移植性差。如果使用加载纯Java数据库驱动程序的话,需要获取数据库厂家提供的数据库驱动程序,不依赖与平台。
1. 建立JDBC-ODBC桥接器
JDBC使用java.lang包中的Class类建立桥接器。Class类调用他的静态方法ForName加载sun.jdbc.odbc包中的JdbcOdbcDriver类建立桥接器。
建立桥接器时可能会发生异常,需要捕获异常。代码如下:
try{ Class.ForName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
System.out.println(e);
}
2.建立数据库连接
建立数据库连接时需要使用数据库对应的数据源的名称,而不是数据库的名称。
首先使用sun.sql包中的Connection类声明一个对象,然后使用类DriverManager调用getConnection方法创建连接对象。
try{ Connection con= DriverManager.getConnection("jdbc:odbc:数据源名称","数据库登录名","密码");
}
catch(SQLException e){}
其中“数据库登录名”和“密码”可以为空。
接下来应用程序就可以通过SQL语句和数据库中的表交互信息了。
3.查询操作
查询操作的步骤如下:
1.获取Statement SQL语句对象
首先声明一个Statement对象,然后使用连接对象con调用方法createStatement()创建SQL语句对象。
Statement sql = con.createStatement();
2.获取查询结果
有了Statement对象之后,就可以调用相应的方法来操作数据库,并将结果存放在一个ResultSet对象当中。
下面的语句查询数据库中employee表中的全部内容:
ResultSetrs = sql.executeQuery("SELECT * FROM employee");
如果employee表中有四个字段,三条内容,那么rs中正好存有三行四列内容,也就是说,rs中的一行就是数据表中的一条内容。
ResultSet对象一次只能看到一个数据行,使用next()方法走到下一数据行,当下一行没有数据时返回false,
获得了一行数据之后,调用getXxxx()方法来获取字段值,getXxxx()函数的参数可以是索引位置(例如getInt(1);getString(2)等),
也可以是数据表的列名(例如getInt(age);getString(name)等)。一下为常用方法:
byte getByte()
Date getDate()
double getDouble()
float getFloat()
int getInt()
long getLong()
String getString()
注意:a.无论字段是何种属性,总可以使用getString()方法返回字段值的串表示。
b.使用getXxxx()方法查看记录时,不可以颠倒字段的顺序,例如
不可以:getInt(4); getInt(3);
4.更新、添加与删除操作
通过调用Statement对象的public int executeUpdate(String sqlStatement);方法来实现数据库的更新、添加、删除操作,具体的操作有sqlStatement指定的SQL语句决定。
Update<表名>set<字段名>=新值 where<条件子句>
Insert into 表(字段列表)values(对应的具体记录)或Insert into 表(values(对应的具体记录))
Delete from <表名>where<条件子句>
5.预处理语句
Java提供了被称为预处理语句的PreparedStatement对象,可以更高效的操作数据库。
JDBC使用连接对象con调用preparedStatement(String sql)方法对参数指定的SQl语句进行预编译处理,生成底层的内部命令封装到PreparedStatement对象中,
该对象调用下列方法使用底层命令操作数据库。
ResultSet executeQuery()
booleanexecute()
int executeUpdate()
具体使用方法如下:
PreparedStatement sql = con.PreparedStatement("SELECT * FROM employee");
ResultSetrs = sql.executeQuery();
这样,rs中就存储了获取的查询数据。
6.事务处理
事务是由一组SQL语句组成,事务处理就是说事务中的SQL语句,要么全部执行,要么一个都不执行。
JDBC的事务处理步骤:
1.JDBC建立连接后,con的默认提交模式为自动提交,即提交一个SQL语句之后立即执行。
为了执行事务处理,需要con对象调用setAutoCommit(boolean autoCommmit)方法,将参数autoCommit取值false来关闭默认置。
con.setAutoCommit(false);
2.调用commit()方法
取消自动提交之后,con产生的Statement对象对数据库提交的任何一个SQL语句都不会执行,必须手动调用commit()方法,
con调用commit()方法来使事务中的SQL语句生效。
3.使用rollback()方法
当事务中有一个SQL语句发生错误是时,会抛出SQLException异常,必须捕获异常,并让con调用rollback()方法,撤销事务成 功执行过的SQL语句,保证事务处理的一致性。
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------