本文作者:qiaoqingyi

c数据库编程(c语言编写数据库管理)

qiaoqingyi 2023-11-18 127

  一、JDBC的概念

  1、 JDBC (Java DataBase Connectivity) Java数据库连接

  a) 主要提供java数据库应用程序的API支持

  2、 JDBC的主要功能

  a) 创建和管理与数据源的连接

  b) 发送SQL数据命令到数据源

  c) 提取并处理由数据源返回的结果集

  3、 JDBC可分为两层

  a) 驱动程序管理接口

  b) JDBC API

  4、 Java.sql包中定义的常用基本的JDBC API

  a) 类DriverManager:管理一组JDBC驱动程序的基本服务

  b) 接口Connection:获得与数据库的连接

  c) 接口Statement:用于执行静态的SQL语句,并返回生成的结果集对象

  d) 接口ResultSet:表示数据库结果集的数据表,通常执行查询数据库的语句生成

  e) 类SQLException:有关数据库的异常操作

二、JDBC的基础应用

  1、编写JDBC应用程序的基本步骤

  a) 导入JDBC的包或包括JDBC的包

  构建路径(Building Path)- 配置路径

  (b)加载JDBC驱动

1 //1.加载驱动

  (c)建立与数据库的连接

1 Connection conn = DriverManager.getConnection(url, user, password);

  (d)执行SQL语句,与数据库交互

//3.新建statement对象

  (e)关闭建立的连接

  各种关闭

  2.实例

  a.加载驱动程序

  Class类中提供加载驱动的方法

  Public static Class forName(String className)

  Throws ClassNotFoundException

c数据库编程(c语言编写数据库管理)

  Oracle驱动类的描述符为:oracle.jdbc.driver.OracleDriver

  b.建立数据库的连接

  DriverManager提供了getConnection方法可获得指定数据库的连接对象(Connecting conn):

  Public static Connectioin getConnection(String url, String username, String pwd )throws SQLException

  Oracle数据库的url格式为:

  Jdbc:oracle:thin:@主机名或ip:端口号:数据库名

  c.获得Statement 对象(Statement st)

  Connection类中提供获得Statement对象的方法

  Statement getStatement() throws SQLException

  d.Statement类中提供可执行SQL命令的方法

  Boolean execute(String SQL) throws SQLException

  Result executeQuery(String SQL) throws SQLException

  Int executeUpdate(String SQL) throws SQLException

  e.ResultSet 可提供对结果集操作的方法

  移动结果集操作指针

  Boolean next() throws SQLException

  由字段名获取其值

  String getString(String columeName) throws SQLException

  三:JDBC的高级应用

  1.PreparedStatement接口是Statement的子接口,允许使用不同的参数多次使用同一个SQL语句

  2.Connection接口提供了创建PreparedStatement对象的方法,可指定SQL语句

  PreparedStatement preparedStatement(String Sql) throws SQLException

DEMO:

  3.事务处理

  事务:是由相关的SQL操作构成的一个完整的操作单元,该单元作为一个整体来使用要么全做要么不做

  事务的四个属性:

  原子性:要么全做,要么全不做

  一致性:事务使数据从一个一致性状态大另一个一致性状态

  持久性:事务对数据库的操作时永久的

  隔离性:一个事务的操作不影响其他事务的操作即事务与事务之间是独立的

  4.java中的事务操作

Conn.setAutoCommit(false)//取消事务的自动提交 Conn.rollback();//事务的回滚 实战演练

  具:eclipse

  MySQL5.6

  MySQL连接驱动:mysql-connector-java-5.1.27.jar

  加载驱动:

  1. 在工程目录中创建lib文件夹,将下载好的JDBC放到该文件夹下,如下图所示:

  2. 右键工程名,在java build path中的Libraries分页中选择Add JARs...,选择刚才添加的JDBC,如下图:

  数据包准备:

  在数据库sqltestdb中创建如下数据表emp:

  1

  2

  3

  4

  5

  6

  7

  CREATE TABLE emp(empno INT(4) PRIMARY KEY,ename

  VARCHAR(10),job VARCHAR(9),hiredate DATE,sal FLOAT(7,2)) ;

  添加数据

  连接数据库并读取数据:

  数据库名称:sqltestdb

  数据包名称:emp

  端口号:3306

  用户名:root

  密码:root

1 package sqldemo; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class main { 10 11 public static void main(String[] args) { 12 //声明Connection对象 13 Connection con; 14 //驱动程序名 15 String driver = "com.mysql.jdbc.Driver"; 16 //URL指向要访问的数据库名mydata17 String url = "jdbc:mysql://localhost:3306/sqltestdb"; 18 //MySQL配置时的用户名 19 String user = "root"; 20 //MySQL配置时的密码 21 String password = "123456"; 22 //遍历查询结果集 23 try { 24 //加载驱动程序 25 Class.forName(driver); 26 //1.getConnection()方法,连接MySQL数据库!! 27 con = DriverManager.getConnection(url,user,password); 28 if(!con.isClosed()) 29 System.out.println("Succeeded connecting to the Database!"); 30 //2.创建statement类对象,用来执行SQL语句!! 31 Statement statement = con.createStatement(); 32 //要执行的SQL语句33 String sql = "select * from emp"; 34 //3.ResultSet类,用来存放获取的结果集!! 35 ResultSet rs = statement.executeQuery(sql); 36 System.out.println("-----------------"); 37 System.out.println("执行结果如下所示:");

  运行结果:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  Succeeded connecting to the Database!

  -----------------

  执行结果如下所示:

  -----------------

  姓名 职称

  -----------------

  李兴华 经理

  张三 总监

  王五 厂长

  齐秦 书记

  张刚 组长

  曹操 财务

  李四 总裁

  数据库数据成功获取!!

  增加、删除和修改数据:

  增加数据:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  String name;

  String id;

  PreparedStatement psql;

  ResultSet res;

  //预处理添加数据,其中有两个参数--“?”

  psql = con.prepareStatement("insert into emp (empno,ename,job,hiredate,sal) + "values(?,?,?,?,?)");

  psql.setInt(1, 3212); //设置参数1,创建id为3212的数据

  psql.setString(2, "王刚"); //设置参数2,name 为王刚

  psql.setString(3, "总裁");

  DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");

  Date myDate2 = dateFormat2.parse("2010-09-13"); psql.setDate(4,newjava.sql.Date(myDate2.getTime()));

  psql.setFloat(5, (float) 2000.3);

  psql.executeUpdate(); //执行更新

  运行结果:

  更新数据:

  1

  2

  3

  4

  5

  6

  PreparedStatement psql;

  //预处理更新(修改)数据,将王刚的sal改为5000.0

  psql = con.prepareStatement("update emp set sal = ? where ename = ?");

  psql.setFloat1,(float)5000.0); psql.setString(2,"王刚"); psql.executeUpdate();

  更改结果:

  删除数据:

  1

  2

  3

  4

  5

  6

  PreparedStatement psql;

  //预处理删除数据

  psql = con.prepareStatement("delete from emp where sal ?"); psql.setFloat(1, 4500); psql.executeUpdate();

  psql.close();

  删除结果:

  西安云间科技Java培训0学费+0基础+项目实战演练+大咖讲师=高薪就业,150天让你从菜鸟变大咖。

阅读
分享