Oracle——7.连接数据库

阅读: 评论:0

Oracle——7.连接数据库

Oracle——7.连接数据库

目录

导入ojdbc的jar包

创建连接

1.加载驱动

 2.创建连接

创建连接总览

增删改查操作

3.创建一个可执行sql的对象

4.执行sql语句

整理成方法文件

1.创建一个属性

2.创建数据库的连接方法

3.创建增删改的方法

4.创建查询的方法

改进

全代码

DataBase.java

测试文件Test.java


导入ojdbc的jar包

1.将jar包复制到eclipse的src下

2.右键jar包——Build Path——Add to Build Path


创建连接

新建JDBCTest.java文件

1.加载驱动

// 数据库连接的方法
public void getConn() throws Exception{// 1.加载驱动 包名+类名的形式(可以直接复制路径)Class.forName("oracle.jdbc.driver.OracleDriver");
}

复制方法:

  • src包下的Referenced Libraries
  • ojdbc5.jar——oracle——jdbc——driver——OracleDriver.class——OracledDriver
  • 右键Copy Qualified Name

 2.创建连接

// 2.创建连接
// 通过驱动,来创建一个连接
// 创建这个连接,需要三个参数
// 第一个url:数据库的地址和jdbc所连接的数据库类型和数据库的名字
// 第二个user:数据库的用户名
// 第三个password:数据库的密码
// Connection(url,user,password)
Connection("jdbc:oracle:thin:@localhost:1521:orcl","scott","123456");

URL信息:

  • jdbc:oracle:thin:数据库连接方式。thin方式是纯java驱动连接方式
  • localhost:服务器地址。可以是IP地址、机器名、localhost(本机)
  • 1521:服务器端口(Oracle默认端口:1521)
  • orcl:Oracle数据库实例,就是登陆plsqldev时,第三行的Database

现在我们可以创建一个main方法测试一下连接成不成功

public static void main(String[] args) throws Exception{JDBCTest jdbc = new JDBCTest();// 调用Conn();
}

执行如果控制台没有什么反应,没提示错误,很大几率是写对了!

也可以在JDBCTest.java的创建连接语句下面加上输出语句来测试对不对


创建连接总览

public class JDBCTest{public void getConn() throws Exception{Class.forName("oracle.jdbc.driver.OracleDriver");Connection("jdbc:oracle:thin:@localhost:1521:orcl","scott","123456");}
}
public static void main(String[] args) throws Exception{JDBCTest jdbc = new JDBCTest();Conn();
}

可以把加载驱动和连接的代码粘下来存起来,下次写的时候可以直接用~


增删改查操作

对上面创建连接的语句进行修改

// 这一步需要进行导包 java.sql.Connection
Connection conn = Connection("jdbc:oracle:thin:@localhost:1521:orcl","scott","123456");

3.创建一个可执行sql的对象

// 3.通过连接 创建一个可执行sql的对象
Statement stmt = ateStatement();

4.执行sql语句

增删改

增删改都可以用executeUpdate方法

// 4.通过 可执行语句的对象,执行sql语句
// 增删改都可以用这个语句
// 执行之后,会返回一个数字,这个数字表示 执行了几条数据
uteUpdate("insert into dept values(55,'花钱部','北京')");

执行之后,会返回一个数字,这个数字表示 执行了几条数据

所以,我们可以来小改一下来判断它有没有成功

int number = uteUpdate("insert into dept values(55,'花钱部','北京')");
// 验证成功失败
if(num>0){System.out.println("添加成功");
}else{System.out.println("添加失败");
}

查询

executeQuery方法用来写查询语句,会返回一个结果集

// 查询
// 是通过executeQuery方法来进行查询的
// 并且返回一个ResultSet(结果集)类型的数据
ResultSet rs = uteQuery("select * from dept");

获取结果集中的信息

// 可以通过循环,来获取结果集中的信息
()){// 如果有内容// rs结果集中的一行数据// getInt 表示获取的是一个int类型的数据// 括号中是列的名字int deptno = rs.getInt("deptno");String dname = rs.getString("dname");String loc = rs.getString("loc");System.out.println(deptno + "----" + dname + "----" + loc);
}

这里有个问题,如果列的名字记不住或懒得写怎么办??—— 还可以通过列来获取信息

()){int deptno = rs.getInt(1);String dname = rs.getString(2);String loc = rs.getString(3);System.out.println(deptno + "----" + dname + "----" + loc);
}

整理成方法文件

新建一个DataBase.java文件

1.创建一个属性

Connection conn; // 创建属性

2.创建数据库的连接方法

// 数据库的连接
public void getConn(){Class.forName("oracle.jdbc.driver.OracleDriver");conn = Connection("jdbc:oracle:thin:@localhost:1521:orcl","scott","123456");System.out.println("连接成功");
}

出现异常的修改方法

  • 可以按照上面之前写过的方法一样抛出异常
  • 也可以用try-catch
public void getConn(){try{Class.forName("oracle.jdbc.driver.OracleDriver");conn = Connection("jdbc:oracle:thin:@localhost:1521:orcl","scott","123456");System.out.println("连接成功");} catch (Exception e) {e.printStackTrace();}
}

3.创建增删改的方法

// 增删改的一个共通
public int DoExe(String sql){// 1.调用数据库连接的方法getConn();try{// 2.创建可执行对象Statement stmt = ateStatement();// 执行sql语句uteUpdate(sql);} catch (SQLException e) {e.printStackTrace();}return 0;
}

可以在main方法里进行测试

public static void main(String[] args) throws Exception {// 想删除 部门表中的56String sql = "delete from dept where deptno=56";DataBase db = new DataBase();int num = db.DoExe(sql);if(num>0) {System.out.println("处理成功");}else{System.out.println("处理失败");}
}

改进一下!

public static void main(String[] args) throws Exception {Scanner input = new Scanner(System.in);System.out.println("请输入要删除的部门编号:");int deptno = Int();String sql = "delete from dept where deptno=" + deptno;DataBase db = new DataBase();int num = db.DoExe(sql);if(num>0) {System.out.println("处理成功");}else{System.out.println("处理失败");}
}

4.创建查询的方法

返回的是ResultSet结果集

public ResultSet Query(String sql){// 1.调用数据库连接的方法getConn();try {// 2.创建可执行的对象Statement stmt = ateStatement();// 执行uteQuery(sql);} catch (SQLException e) {e.printStackTrace();}return null;
}

调用方法

String sql1 = "select * from dept";
// 执行
ResultSet rs = db.Query(sql1);
()){System.out.Int(1) + "----" + rs.getString(2) + "----" + rs.getString(3));
}

改进

我们在写类似插入语句的时候会用到单引号,打出来太麻烦了怎么办?

String sql = "insert into dept values (" + deptno + ",'" + dname + "'," + "'" + loc + "')";

把信息改成“?”

? 表示占位符

String sql = "insert into dept values (?,?,?)";

方法改成下面这样

< obj 表示可变参数,这个方法的参数 可以是1个,可以是2个,也可以是3个,或多个

public int DoExe(String  obj){getConn();try {// 预处理 解决"?"// 先获取sql语句PreparedStatement pstmt = conn.prepareStatement(sql);// 为了循环括号里面的参数,替换"?"for(int i = 0;i < obj.length;i++) {pstmt.setObject(i+1, obj[i]);}// 执行,后面的括号不需要参数uteUpdate();} catch (SQLException e) {e.printStackTrace();}return 0;
}

全代码

DataBase.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class DataBase {Connection conn; // 属性// 数据库的连接public void getConn() throws Exception {// 1.加载驱动 包名+类名的形式Class.forName("oracle.jdbc.driver.OracleDriver");// 2.创建连接// 通过驱动来创建一个连接// 创建这个连接,需要三个参数// 第一个url:数据库的地址和jdbc所连接的数据库类型和数据库的名字// 第二个user:数据库的用户名// 第三个password:数据库的密码conn = Connection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "123456");}/*// 增删改的一个共通public int DoExe(String sql) throws Exception {// 1.调用数据库连接的方法getConn();// 2.创建可执行对象try {Statement stmt = ateStatement();// 执行sql语句uteUpdate(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return 0;}*/// 增删改的一个共通//  obj 表示可变参数,这个方法的参数可以是1个,可以是2个,也可以是三个,或多个public int DoExe(String  obj) throws Exception {// 1.调用数据库连接的方法getConn();try {// 预处理 解决"?"// 先获取sql语句PreparedStatement pstmt = conn.prepareStatement(sql);// 为了循环括号里面的参数,替换"?"// "?"是没有下标概念的,所以从1开始;但数组从0开始for(int i = 0;i < obj.length;i++) {pstmt.setObject(i+1, obj[i]);}// 执行,后面的括号不需要参数uteUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return 0;}public ResultSet Query(String  obj) throws Exception{getConn();try {/*Statement stmt = ateStatement();uteQuery(sql);*/// 预处理PreparedStatement pstmt = conn.prepareStatement(sql);// 把占位符,用实际的值给替换掉for(int i = 0;i < obj.length;i++){pstmt.setObject(i+1, obj[i]);}// 执行并返回uteQuery();} catch (SQLException e) {e.printStackTrace();}return null;}}

测试文件Test.java

import java.sql.ResultSet;
import java.util.Scanner;public class Test {public static void main(String[] args) throws Exception {DataBase db = new DataBase();Scanner input = new Scanner(System.in);while(true) {System.out.println("1.增加");System.out.println("2.删除");System.out.println("3.修改");System.out.println("4.查找");System.out.println("5.退出");System.out.print("输入功能:");int no = Int();if(no == 5){System.out.println("退出成功");break;}switch(no){case 1:System.out.print("请输入部门号:");int deptno = Int();System.out.print("请输入部门名称:");String dname = ();System.out.print("请输入地点:");String loc = ();// "?"表示占位符String sql = "insert into dept values (?,?,?)";int num = db.DoExe(sql,deptno,dname,loc);if(num>0) {System.out.println("添加成功");}else{System.out.println("添加失败");}break;case 2:System.out.print("请输入要删除的部门编号:");int deptno1 = Int();String sql1 = "delete from dept where deptno=" + deptno1;int num1 = db.DoExe(sql1);if(num1>0) {System.out.println("删除成功");}else{System.out.println("删除失败");}break;case 3:System.out.print("请输入修改的部门编号:");int deptno2 = Int();System.out.print("输入修改的列名:");String col = ();System.out.print("输入修改后的信息:");String recol = ();String sql2 = "update dept set " + col + "='" + recol + "' where deptno=" + deptno2;int num2 = db.DoExe(sql2);if(num2>0) {System.out.println("修改成功");}else{System.out.println("修改失败");}break;case 4:/*String sql3 = "select * from dept";ResultSet qu = db.Query(sql3);()) {System.out.Int(1) + "----" + qu.getString(2) + "----" + qu.getString(3));}*/// 输入部门编号或者部门名称,查找有没有System.out.print("输入部门编号");int deptno4 = Int();System.out.print("输入部门名称");String dname4 = ();String sql4 = "select * from dept where deptno=? and dname=?";ResultSet qu1 = db.Query(sql4,deptno4,dname4);if(!()){System.out.println("没有该用户");}else{System.out.println("有该用户");System.out.Int(1) + "----" + String(2) + "----" + String(3));}break;}}}
}

jar包链接 提取码:n3oc

链接: 
提取码:n3oc 

本文发布于:2024-01-30 15:41:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660051821068.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:连接数据库   Oracle
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23