JDBC——java数据库连接技术 oracle数据库连接 mysql数据库连接 批处理

JDBC
java数据库连接技术
是java提供的一组连接各种数据库的通用api(接口)
具体是由各数据库的厂商实现的
驱动jar包就是实现jdbcapi的一组实现类
常用接口:
1.connection
与特定数据库的连接,执行sql语句并在连接的上下文中返回结果
2.statement
用于执行静态sql语句并返回其生成的结果的对象
3.preparestatement
表示预编译的sql语句的对象
4.callablestatement
用于执行sql存储过程的界面
5.resultset
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成

连接数据库
1.连接oracle数据库
首先找到oracle的驱动,在oracle安装目录下找到jdbc
下的lib下的ojdbc6.jar
复制到新建的lib文件夹下,右键build path

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import oracle.jdbc.driver.OracleDriver;

public class ConnectOracle {

	public static void main(String[] args) throws SQLException {
		
		/*连接方法1(不常用,但易于理解)
		 * Class.forName("oracle.jdbc.driver.OracleDriver");
		String url="jdbc:oracle:thin:@//localhost:1521/ORCL";
		String user="scott";
		String password="123";
		Connection conn=DriverManager.getConnection(url,user,password);
		System.out.println(conn);
		 */
		//连接方法2,用反射来实现(常用)
		OracleDriver driver=new OracleDriver();
		Properties pro=new Properties();
		pro.put("user", "scott");
		pro.put("password", "123");
		Connection conn=driver.connect("jdbc:oracle:thin:@//localhost:1521/ORCL", pro);
		System.out.println(conn);
		//执行mysql命令获取执行结果
                             //添加一个员工
		String sql="insert into emp values(9990,'xiaoming','CLERK',7782,SYSDATE,3000,NULL,10)";
                             //由连接对象去创建用于执行sql语句的statement
		Statement smt=conn.createStatement();
                             //statement有一系列的execute方法,execute返回布尔类型,true表示有查询结果
                             //executeBatch返回int类型的数组,用于批量执行多条sql语句
                             //executeUpdate返回int,表示受影响的行数,专用于执行insert delete update语句
                             //executeQuery返回resultSet结果集,专用于执行select语句
		int ret=smt.executeUpdate(sql);
		if(ret>0)
		{
			System.out.println("添加成功");
		}
		smt.close();
		conn.close();	
	}
}

2.连接mysql数据库
下载对应版本的驱动,如mysql-connector-java-8.0.13.jar
同样添加到lib下,build path

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.mysql.jdbc.Driver;

public class ConnectMysql {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		Class.forName("com.mysql.cj.jdbc.Driver");
		String url="jdbc:mysql://localhost:3306/ljj?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL";
		String user="root";
		String password="123";
		Connection conn=DriverManager.getConnection(url,user,password);
		System.out.println(conn);
	}
}

oracle数据库中的查询

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import java.util.Scanner;

public class ExcuteSelect {

	public static void main(String[] args) throws Exception {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		String url="jdbc:oracle:thin:@//localhost:1521/ORCL";
		String user="scott";
		String password="123";
		Connection conn=DriverManager.getConnection(url,user,password);
		System.out.println(conn);
		//查询某个职位的所有员工的工号,姓名,职位,工资,入职日期
		Scanner input=new Scanner(System.in);
		String sql="select empno,ename,job,sal,hiredate from emp where job='"+input.next()+"'";
		//执行sql语句
		Statement smt=conn.createStatement();
		//读取结果,ResultSet结果集相当于游标
		ResultSet rs=smt.executeQuery(sql);
		//next方法跟游标中的notfound类似,若返回true,就表示下一行是有数据的,并且读完一行后自动移动到下一行
		while(rs.next())
		{
			int empno=rs.getInt("empno");
			String ename=rs.getString("ename");
			String job=rs.getString("job");
			Date hiredate=rs.getDate("hiredate");
			double sal=rs.getDouble("sal");
			System.out.println(empno+"\t"+ename+"\t"+job+"\t"+hiredate+"\t"+sal);			
		}
		smt.close();
		conn.close();
	}
}

oracle数据库实现登录功能

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class Conn {
	public static void main(String[] args) throws Exception   {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		String url="jdbc:oracle:thin:@//localhost:1521/ORCL";
		String user="scott";
		String password="123";
		Connection conn=DriverManager.getConnection(url,user,password);
		System.out.println(conn);
		
		Scanner input=new Scanner(System.in);
		System.out.println("请输入用户名:");
		String uname=input.nextLine();
		System.out.println("请输入密码:");
		String upwd=input.nextLine();
//      不使用预编译		
//		String sql="select * from user_info where uname='"+uname+"' and upwd='"+upwd+"'";
//		Statement smt=conn.createStatement();
//		ResultSet rs=smt.executeQuery(sql);
//		boolean flag=rs.next();
//		rs.close();
//		smt.close();
//		conn.close();
//		if(flag)
//		{
//			System.out.println("登录成功");
//		}
//		else
//		{
//			System.out.println("用户名或密码错误");
//			
//		}
		//使用预编译 执行效率提升 更加安全 防止sql注入
		String sql="select * from user_info where uname=? and upwd=?";
		PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, uname);
		ps.setString(2, upwd);
		ResultSet rs=ps.executeQuery();
		boolean flag=rs.next();
		rs.close();
		conn.close();
		if(flag)
			{
				System.out.println("登录成功");
			}
			else
			{
				System.out.println("用户名或密码错误");	
			}
	}
}

oracle数据库批处理

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;

import oracle.jdbc.driver.OracleDriver;

public class AddSal {

	public static void main(String[] args) throws Exception {
		OracleDriver driver=new OracleDriver();
		Properties pro=new Properties();
		pro.put("user", "scott");
		pro.put("password", "123");
		Connection conn=driver.connect("jdbc:oracle:thin:@//localhost:1521/ORCL", pro);
		//使用批处理给每某些员工工资加100
		String sql="update emp set sal=sal+100 where empno=?";
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setInt(1, 7788);
		//添加批处理
		ps.addBatch();
		ps.setInt(1, 7369);
		ps.addBatch();
		ps.setInt(1, 7782);
		ps.addBatch();
		//把三条语句一起执行
		ps.executeBatch();
		System.out.println("修改成功");
		ps.close();
		conn.close();
		
	}
}
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值