java中使用JDBC完成数据库操作的基本步骤是什么?
发布网友
发布时间:2022-04-23 11:30
我来回答
共2个回答
懂视网
时间:2022-04-07 19:46
import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.ResultSet;
4 import java.sql.SQLException;
5 import java.sql.Statement;
6
7 public class OraclDao {
8
9 private Connection conn = null;
10
11 public void initConnection(String url, String uid, String pwd) {// 初始化
12 String className = "oracle.jdbc.driver.OracleDriver";
13 try {
14 Class.forName(className);
15 conn = DriverManager.getConnection(url, uid, pwd);
16 } catch (ClassNotFoundException e) {
17 e.printStackTrace();
18 } catch (SQLException e) {
19 e.printStackTrace();
20 }
21 }
22
23 public void closeConnection() {
24 if (conn != null) {
25 try {
26 conn.close();
27 conn = null;
28 } catch (SQLException e) {
29 e.printStackTrace();
30 }
31 }
32 }
33
34 public ResultSet executeSQL(String sql) throws SQLException {
35 Statement stmtt = null;
36 ResultSet rs = null;
37 try {
38 stmtt = conn.createStatement();
39 rs = stmtt.executeQuery(sql);
40 /*
41 * while (rs.next()) { System.out.println("sdfsdf");// TODO }
42 */
43 return rs;
44 } catch (SQLException e) {
45 e.printStackTrace();
46 } finally {
47 if (rs != null) {
48 try {
49 rs.close();
50 rs = null;
51 } catch (SQLException e) {
52 e.printStackTrace();
53 }
54 }
55 if (stmtt != null) {
56 try {
57 stmtt.close();
58 stmtt = null;
59 } catch (SQLException e) {
60 e.printStackTrace();
61 }
62 }
63 // closeConnection();
64 }
65 }
66
67 public static void main(String[] args) {
68 String url = "jdbc:oracle:thin:@localhost:" + 1521 + ":orcl";
69 OraclDao oraclDao = new OraclDao();
70 oraclDao.initConnection(url, "SCOTT", "tiger");
71
72 try {
73 ResultSet rs = oraclDao.executeSQL("select * from scott.userinfo");
74
75 while (rs.next()) {
76 System.out.println("sdfsdf");// TODO
77 }
78 } catch (SQLException e) {
79 e.printStackTrace();
80 }
81 oraclDao.closeConnection();
82 }
83 }
如上程序,执行main函数,在executeSQL方法里面ResultSet是有值的,但是当返回到外层(main),发现rs是null。经仔细分析,这一奇怪的现象产生的原因是ResultSet是和连接相关的。(即如果关闭了statement、connection或resultset,则resultset就也没有值了)
当生成 ResultSet
对象的 Statement
对象关闭、重新执行或用来从多个结果的序列获取下一个结果时,ResultSet
对象将自动关闭。
本例中,执行executeSQL方法时应该是先执行finally里的,再执行return rs;finally里关闭了resultset和statement,所以返回的resultset的值成为了null。
解决的方法:
1、将查询得到的resultSet中的值保存在arrayList等中,executeSQL方法的返回值类型不要写成ResultSet类型的。
2、finally中的关闭操作往后放,即不写在executeSQL方法里,而是在外层处理过resultset后再关闭。
其他:resultset算是比较特殊的了。如果一个函数返回值是int型,程序中假设返回变量a,a的值是5.在finally块中又将a的值置为-1;则上层接收到的返回值仍然是5.虽然先执行finally块,后执行return语句,也不会改变return的值。此时返回的是5,但a的真实值应该是变为-1了。注意这个和resultSet的区别。
jdbc操作数据库返回结果集的注意事项
标签:
热心网友
时间:2022-04-07 16:54
创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭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() ;
}
}
java中使用JDBC完成数据库操作的基本步骤是什么?
1、加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现。例如:try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ;}catch(ClassNotFoundException e){ System.out.println("...
java中使用JDBC完成数据库操作的基本步骤是什么?
创建一个以JDBC连接数据库的程序,包含7个步骤: \x0d\x0a 1、加载JDBC驱动程序: \x0d\x0a 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), \x0d\x0a 这通过java.lang.Class类的静态方法forName(String className)实现。 \x0d\x0a 例...
java中使用JDBC连接数据库的步骤?
1.注册驱动 Class.forname("com.mysql.jdbc.Driver");//这是连接mysql数据库的驱动 2.获取数据库连接 java.sql.Connection conn=java.sql.DriverManager.getConnection(); 3.获取表达式 java.sql.Statement stmt=conn.createStatement("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK"...
JDBC使用步骤过程
1、加载JDBC驱动程序。在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。成功加载后,会将Driver类的实例注册到DriverManager类中。2、提供JDBC连接的URL。连接URL定义了连接数据库时的协议、子协议、数据源标识。...
JDBC连接数据库的步骤都有哪些?
1、首先我们通过数据库可视化工具navicate for mysql,新建一个数据库,名字叫test新建一张表。2、添加id,name字段,点击【保存】,设置表名称为user。3、最终数据库及表创建成功。4、然后我们添加一条数据。5、下载java mysql connector驱动,通过maven添加依赖即可。
彻底搞懂JDBC的运行过程
JDBC的连接步骤 执行一次JDBC连接,分六个步骤进行:1. 导入包 在程序中包含数据库编程所需的JDBC类。大多数情况下,使用 import java.sql.* 就足够了 2. 注册JDBC驱动程序 需要初始化驱动程序,这样就可以打开与数据库的通信。3. 打开一个连接 使用DriverManager.getConnection()方法来创建一个...
列举Java JDBC编程中主要的接口和类及功能,列举JDBC编程的步骤
用jdbc访问数据库需要4步骤,只要按这个做就可以轻松访问数据库。1、加载数据库驱动 2、获得数据库连接 3、执行sql语句 4、(处理结果集)5、关闭资源 第4歩看你的sql语句了,如果有返回结果则有第4歩,否则不用。具体的:用一个类做例子 public class UserDaoImpl{ public void insertUserMessage(...
JDBC的工作原理是什么?
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术。JDBC工作原理主要分3个步骤:1、加载数据库驱动。2、获取数据库连接。3、发送sql语句访问数据库 。1、加载数据驱动:使用Class.forName方法,调用这个方法会加载数据库驱动com.MySQL.jdbc.driver。关于数据库驱动的理解,其实是sun公司给了一个Driver...
JDBC连接数据库的步骤都有哪些?
创建一个以JDBC连接数据库的程序,包含7个步骤:1、JDBC所需的四个参数(user,password,url,driverClass)(1)user用户名;(2)password密码;(3)URL定义了连接数据库时的协议、子协议、数据源标识。书写形式:协议:子协议:数据源标识。协议:在JDBC中总是以jdbc开始。子协议:是桥连接的驱动...
Java数据库连接建立联接
此步骤主要涉及创建连接并指定数据库 URL、用户名和密码。以下是使用 JDBC-ODBC 桥建立连接的示例代码: java Connection con = DriverManager.getConnection(url, "myLogin", "myPassword"); 其中,`url` 是数据库的 JDBC URL,包含数据库源或系统的名称。例如,使用 ODBC 访问名为 "Fred"...