jdbc实现Oracle数据库连接的简单案例

一直想整理下jdbc的使用,今天终于有机会了。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。接下来将通过简单的案例实现jdbc的连接。

本案例实现的功能是通过jdbc连接Oracle数据库实现增删改查方法。

  1. 新建工程,创建名为oracle_test1的类文件,并引入驱动包ojdbc5.jar。创建数据库连接方法conn_ora()。
    //创建orcal链接
    	public static Connection conn_ora(){
    		Scanner in=new Scanner(System.in);
    		Connection	conn=null;
    
    		try {
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			conn=DriverManager.getConnection
    					("jdbc:oracle:thin:@localhost:1521:oracl","root","root");
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return conn;
    
    	}

  2. 创建数据库关闭方法 cloConn(Connection conn,PreparedStatement ps,ResultSet rs)。
    //关闭数据库链接
    		public static void cloConn(Connection conn,PreparedStatement ps,
    				ResultSet rs)
    		{
    			try {
    				if(rs!=null){
    					rs.close();
    				}
    				if(ps!=null){
    					ps.close();
    				}
    				if(conn!=null){
    					conn.close();
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}

  3. 创建数据的增删改查方法。
    //修改
    	public static void ch_ora(){
    
    		try {
    			Scanner in=new Scanner(System.in);
    			System.out.println("请输入修改后的用户名称:");
    			String name=in.next();
    			System.out.println("请输入要修改的用户id:");
    			int id=in.nextInt();
    			String sql="update users set name=? where id=?";
    			ps=conn_ora().prepareStatement(sql);
    			ps.setString(1, name);
    			ps.setInt(2, id);
    			ps.executeUpdate();
    			if(ps.executeUpdate()==1){
    				System.out.println("修改成功!");
    			}
    			else{
    				System.out.println("修改失败!");
    			}
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			cloConn(conn_ora(),ps,rs);
    		}
    
    	}
    	//查询
    	public static void search_ora(){
    
    		try {
    			String sql="select name,password from users";
    			ps=conn_ora().prepareStatement(sql);
    			rs=ps.executeQuery();
    			while(rs.next()){
    				String name=rs.getString("name");
    				String psw=rs.getString("password");
    				System.out.println("用户:"+name+"\r"+"密码:"+psw);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			cloConn(conn_ora(),ps,rs);
    		}
    	}
    	//增加
    	public static void add_ora(){
    
    	
    		Scanner in=new Scanner(System.in);
    		int id;
    		String name;
    		String sex;
    		System.out.println("请输入增加的用户Id");
    		id=in.nextInt();
    		System.out.println("请输入增加的用户姓名:");
    		name=in.next();
    		System.out.println("请输入增加的用户性别:");
    		sex=in.next();
    		String sql=" insert into users(id,name,sex)values(?,?,?)";
    		
    		try {
    			ps=conn_ora().prepareStatement(sql);
    			ps.setInt(1, id);
    			ps.setString(2, name);
    			ps.setString(3, sex);
    			ps.executeUpdate();
    			if(ps.executeUpdate()==1){
    				System.out.println("数据添加成功!");
    			}else{
    				System.out.println("数据增加失败!");
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			cloConn(conn_ora(),ps,rs);
    		}
    
    	}
    	//删除
    		public static void del_ora(){
    
    		
    			Scanner in=new Scanner(System.in);
    			int id;
    			System.out.println("请输入删除的用户Id");
    			id=in.nextInt();
    			String sql=" delete from users where id=?";
    			try {
    				ps=conn_ora().prepareStatement(sql);
    				ps.setInt(1, id);
    				ps.executeUpdate();
    				if(ps.executeUpdate()==1){
    					System.out.println("数据删除成功!");
    				}else{
    					System.out.println("数据删除失败!");
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}finally{
    				cloConn(conn_ora(),ps,rs);
    			}
    
    		}

  4. 创建静态变量PreparedStatement和ResultSet,并在main方法中对增删改查方法进行调用。
    private static	PreparedStatement ps=null;
    	private static  ResultSet rs=null;
    	public static void main(String[] args) {
    		//ch_ora();//修改
    		//search_ora();//查询
    		//add_ora();//增加
    		del_ora();//删除
    	}

总结,在工作中我们一般会将数据库的链接和关闭方法写成一个工具类以供调用,甚至会在工具类中提供简单的增删改查方法。如下类文件BaseDao
public class BaseDao {
	private static String driPath="";
	private static String url;
	private static String uname;
	private static String psw;
	private static String sql;

	//链接数据库
	public static Connection getConn(){
		Connection conn=null;
		try {
			Class.forName(driPath);
			conn=DriverManager.getConnection(url);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;

	}
	//查询数据
	public static void ser_Data(){
		try {
			PreparedStatement ps=getConn().prepareStatement(sql);
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	//修改数据
	public static void chg_Data(){
		try {
			PreparedStatement ps=getConn().prepareStatement(sql);
			ps.executeUpdate(sql);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
	//关闭数据库链接
	public static void cloConn(Connection conn,PreparedStatement ps,
			ResultSet rs)
	{
		try {
			if(rs!=null){
				rs.close();
			}
			if(ps!=null){
				ps.close();
			}
			if(conn!=null){
				conn.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值