最近做的比较多的事情就是学习java基础知识,基本上是按照专题进行学习,今天主要是对“java中使用jdbc连接数据库”这一模块进行了系统学习,虽然ssh框架功能强大,看似jdbc几乎不再需要,其实这得看情况,有时候使用还是比较好的,虽然代码相对有点繁琐,下面是通过学习写下的知识性内容(注:非转载,但是有借鉴别人的东西,自己去实践后的总结):
出现下面格式的原因:首先已在word文档中进行了书写,方便以后需要时能够很容易获取,粘贴在此,则是备份,谨防丢失,同时也是和大家的交流。
Java中使用JDBC连接mysql数据库(以mysql为例)
一、在eclipse中创建java Project,将mysql的驱动jar包添加到工程lib包中;
二、编写java文件,使用JDBC连接数据库步骤详解:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库(mysql)的驱动到JVM,这通过java.lang.Class类的静态方法forName(String className)实现。
// 加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、创建数据库连接:
?要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
?使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
// 用JDBC 驱动程序建立连接
con = DriverManager.getConnection
("jdbc:mysql://127.0.0.1:3306/rap","root","");
1和2步骤后,数据库连接已成功,如果失败,会抛出异常,使用try-catch。
3、创建一个statement:
要执行sql语句, 必须获得一个java.sql.statement实例,statement实例包含以下两种类型(还有其他类型,不计):
1)、执行静态sql语句,通常通过statement实例实现。
2)执行动态sql语句,通常通过preparedstatement实例实现。
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
4、执行sql语句:
Statement接口提供了三种执行sql语句的方法:executeQuery、executeUpdate、execute。
1)、ResultSet executeQuery(String sql):执行查询数据库的sql语句,返回几个结果集(ResultSet)对象。
2)Int executeUpdate(String sql):用于执行insert、update、delete语句以及sql ddl语句,如create table 和drop table等。
3)Execute(String sql):用于执行返回多个结果集,多个更新计数或二者组合的语句(使用较少)。
5、处理结果(两种情况):
1)、执行更新返回的是本次操作影响到的记录数。
2)执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ; //name字段名称
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
6、关闭JDBC对象:
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
完整实例(数据库名称rap,表名:student)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author Liuchuanwei
* date:2012-01-05
*/
public class ts {
/**
* @param args
*/
public static void main(String[] args) {
Connection con = null;// 连接
Statement stmt = null;// 执行语句
ResultSet rst = null;// 结果集
int i = 0;
try {
/********用JDBC驱动程序连接mysql***********/
// 加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 用JDBC 驱动程序建立连接
con = DriverManager.getConnection
("jdbc:mysql://127.0.0.1:3306/rap","root","");
/** ************** 创建执行语句方法 1 ******************* */
stmt = con.createStatement();
//执行更新返回的是本次操作影响到的记录数
i = stmt.executeUpdate(
"update student set age =21 where stu_id = '402842b8349297b8013492e858a70011'");
System.out.println(i);
// 执行查询返回的结果是一个ResultSet对象
rst = stmt.executeQuery("select * from student");
// 输出结果
while (rst.next()) {
System.out.println(rst.getString(1));
System.out.println(rst.getString(4));
System.out.println(rst.getString("age")+"");
System.out.println(rst.getString("sex"));
}
// 关闭对象
stmt.close();
con.close();
} catch (ClassNotFoundException cnf) {
System.out.println("没找到驱动程序");
cnf.printStackTrace();
} catch (SQLException se) {
se.printStackTrace();
}
}
}