Oracle数据库连接Eclipse的实例(解释为什么有时候明明在数据库里插入了数据却读不出来)

本文详细介绍了使用Java进行Oracle数据库操作的六个基本步骤,包括驱动注册、获取连接、执行SQL语句等,并提供了完整的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建项目->导包->
libs:额外包目录

我们导好包之后就开始写连接代码了。

package com.squid.jdbc;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import oracle.jdbc.OracleDriver;

/**
 * @author Squid 2016-12-27
 * @todo JDBC的六大步骤
 */
public class JDBCStep {

	public static void main(String[] args) {
		Connection connection = null;
		Statement statement = null;
		ResultSet rs = null;
		try {
			// 1.注册驱动
			/*//第一种方式:类加载
			Class.forName("oracle.jdbc.OracleDriver");*/
			
			//第二种方式:利用Driver对象
			Driver driver=new OracleDriver();
			DriverManager.deregisterDriver(driver);
			
			//第三种方式:利用系统参数 -Djdbc.drivers=oracle.jdbc.OracleDriver
			
			
			// 2.获取连接
			String url = "jdbc:oracle:thin:@localhost:1521:XE";
			String username = "squid";
			String password = "squid";
			/*//第一种方式利用DriverManager(常用)
			connection = DriverManager.getConnection(url, username, password);*/
			
			//第二种方式直接使用Driver
			Properties pro=new Properties();
			pro.put("user", username);
			pro.put("password", password);
			connection=driver.connect(url, pro);
			
			System.out.println(connection + "连接成功");
			
			
			// 3.获取执行sql语句对象
			
			/*//第一种statement
			statement = connection.createStatement();*/
			
			//第二种prepareStatement
			PreparedStatement preparedStatement=connection.prepareStatement("select *from  tbl_user where id=?");
			// 4.执行语句
			/*rs = statement
					.executeQuery("insert into tbl_user values('5','第五')");*/
			/*//配合第三步的第一种
			rs = statement.executeQuery("select *from" + " tbl_user");*/

			//配合第三步的第二种
			preparedStatement.setInt(1, 2);//第一个参数指这是第一个"?",第二个参数是?的指为2,本案例即id=2
			//执行查询语句
			rs=preparedStatement.executeQuery();
			
			//执行任何语句,如果有结果集返回TRUE没有结果集返回false
			boolean execute = preparedStatement.execute();
			
			//执行DML语句:insert update delete,返回值表示受影响的行数
			int update=preparedStatement.executeUpdate();
			
			System.out.println(execute);
			
			// 5.处理结果集
			while (rs.next()) {

				int id = rs.getInt("id");
				String name = rs.getString("name");
				System.out.println(id + " " + name);
			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 6.关闭资源,先开的后关
			try {
				if (rs != null)
					rs.close();
				if (statement!=null) {
					statement.close();
				}
				if (connection!=null) {
					connection.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}
这是在博主已经建立了tbl_user表的情况下,如果我们没有表,刚刚通过控制台新建了一个表并插入了数据容易碰到一个奇怪的问题,那就是插入的数据查询不出来。

其实并不奇怪,这是一种事务回滚机制,就像我们银行卡转账一样,如果发生突发情况或者转出方没有确认是不能够成功的,这是一种事务回滚机制。通过commit提交之后才能够完成保存insert动作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游语

对你有帮助,可以请我喝杯奶哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值