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

来源:互联网 发布:网络监听技术的应用 编辑:程序博客网 时间:2024/06/11 18:22

创建项目->导包->
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);*///第二种方式直接使用DriverProperties pro=new Properties();pro.put("user", username);pro.put("password", password);connection=driver.connect(url, pro);System.out.println(connection + "连接成功");// 3.获取执行sql语句对象/*//第一种statementstatement = connection.createStatement();*///第二种prepareStatementPreparedStatement 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没有结果集返回falseboolean 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 blocke.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 blocke.printStackTrace();}}}}
这是在博主已经建立了tbl_user表的情况下,如果我们没有表,刚刚通过控制台新建了一个表并插入了数据容易碰到一个奇怪的问题,那就是插入的数据查询不出来。

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

1 0