问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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"...

java访问数据库的基本步骤 怎么使用java连接数据库 java jdbc连接数据库步骤 java连接数据库详细步骤 java连接sql数据库步骤 java数据库连接步骤 java调用数据库 java连接oracle数据库 javajdbc连接数据库
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
形容春天的成语有哪些形容春天的成语精选 形容春天美好的成语精选84句 我是一名扬大广陵的学生,想要转系到会计班,请问难度大不大,具体怎么转... 2010专转本:本人理科考了251,能上到扬大广陵学院么 ? 2011专转本,被扬大广陵录取,汉语言文学专业,请问在哪个校区上课,住宿... 有谁知道今年扬大广陵专转本电子工程系的最低和最高录取分数线的?谢谢... 我是今年转本的到扬大广陵土木工程的学生,(虽然还没录取,但是考了309... 转本转到扬大广陵的学生住什么地方啊? 2012年一共有多少天假期? 已知a1为2000年2月22日,求B1为至今已经有多少个年零多少个月多少天?求... JDBC可以动态的获取数据库里的所有的表吗 jdbc原理 JDBC中提供的两种实现数据查询的方法是什么? JDBC的工作原理是什么? jdbc preparedstatement可以用来进行动态查询吗 简述使用Jdbc实现数据查询的完整步骤 如何剪视频 怎样CUT一部电视剧中的片段?如题 谢谢了 单人cut什么意思 爱剪辑要剪某个综艺的单人cut怎么剪 福州家庭装修谁比较清楚? 油画是什么时候传入中国的 土巴兔装修贷怎么样? 青岛知名的装修公司有哪些? 福州有哪个公司设置外墙干挂石材施工图。。 急需阿~ 长沙装修公司排名前十强有哪些 福州国广一叶怎么样 福州家装 福州永泰县装饰公司排名有没有?我想参考一下。 福州丽居装饰工程有限公司怎么样? Java里面的JDBC是什么意思啊? jdbc preparedstatement可以动态查询么 java 中使用jdbc怎样实现动态的链接多个数据库?? JDBC如何实现跨数据库的查询 jdbc的JTable中实现一个简单的查询功能 JDBC用户特定条件查询怎么实现 jdbc怎么动态的创建一个数据库? 怎样写一个通用的JDBC查询方法 苹果11怎么不能长截图? 手机充电时显示充电显示充电异常找售后咋回事 18. 在制作PPT时,如何设置动作按钮和超链接? ppt链接中的超链接和动作有什么不同? 通过设置动作按钮和插入超链接来改变幻灯片的播放顺序吗? PPT中 动作设置 和 超链接 的区别?是不是作用是一样的? 要求在做的幻灯片中添加超级链接和动作按钮 请问应该怎么做呀???_百度... 动作按钮和超链接的异同 ppt中动作和超链接的区别 PPT动作超链接 关于PPT自定义动作和超链接问题,请求帮助! 支付宝账户管理在哪?