当前位置: 首页 > news >正文

10月8日 Jdbc(1)

jdbc

接口是一个类的父类

 java连接数据库, java操作数据库,  把java作为数据库的一个客户端

JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

​        当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!

jdbc开发步骤:

  1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

核心接口: java.sql.Connection(连接)

​ java.sql.Statement(发送sql,通知数据库执行)

​ java.sql.ResultSet(获取查询sql的结果集)

一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

jdbc开发步骤:

  1. 添加第三方数据库驱动ja

  1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

        核心接口: java.sql.Connection(连接)

​         java.sql.Statement(发送sql,通知数据库执行)

​         java.sql.ResultSet(获取查询sql的结果集)

        一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

 jdbc的编码

>1. 项目中导入数据库驱动jar
>2. 加载启动类
>3. 得到连接对象Connection
>4. 创建Statement对象
>5. 编写sql语句(java普通字符串)
>6. 执行之
>7. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
>8. 关闭资源

实现查询 

import java.sql.*;
import java.util.Date;
import java.util.Scanner;/*** 查询*/
public class Demo2 {public static void main(String[] args) {/*1. 加载启动类2. 得到连接对象Connection3. 创建Statement对象4. 编写sql语句(java普通字符串)5. 执行之6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据7. 关闭资源*/Connection conn = null;Statement statement = null;ResultSet resultSet = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";conn = DriverManager.getConnection(url, "root", "123");statement = conn.createStatement();System.out.print("请输入要查询员工姓名:");Scanner input = new Scanner(System.in);String name = input.next();String sql = "select * from emp where ename = '"+name+"'";System.out.println(sql);resultSet = statement.executeQuery(sql);//循环获取数据, 一行一行的获取//一定要先调用next()while(resultSet.next()){//获取这一行的单元格中数据// getXxx(int 列序号): 从1开始   Xxx: 数据类型int empNo = resultSet.getInt(1);String ename = resultSet.getString(2);String job = resultSet.getString(3);int mgr = resultSet.getInt(4);Date hiredate = resultSet.getDate(5);double sal = resultSet.getDouble(6);double comm = resultSet.getDouble(7);int deptNo = resultSet.getInt(8);System.out.println(empNo+","+ename+","+job+","+mgr+","+hiredate+","+sal+","+comm+","+deptNo);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();}finally{//倒序关try {if(resultSet != null) {resultSet.close();}if(statement != null) {statement.close();}if(conn != null) {conn.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}}
}

使用jdbc操纵数据库

import javax.xml.bind.SchemaOutputResolver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;/*** 使用jdbc操作数据*/
public class Demo1 {public static void main(String[] args) {/*1. 加载启动类2. 得到连接对象Connection3. 创建Statement对象4. 编写sql语句(java普通字符串)5. 执行之6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据7. 关闭资源*/Connection conn = null;Statement statement = null;try {//1. 加载启动类  反射  核心: ClassClass.forName("com.mysql.jdbc.Driver");//2.得到连接对象Connection  通过DriverManager的静态方法getConnection()String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";conn = DriverManager.getConnection(url, "root", "123");//System.out.println(conn);System.out.println("与数据库服务器连接上了...");//3.创建Statement对象statement = conn.createStatement();//4.编写sql语句//System.out.print("请输入要删除的员工编号:");System.out.print("请输入要加薪的员工编号:");Scanner input = new Scanner(System.in);int empno = input.nextInt();//删除//String sql ="delete  from  emp where empno = "+empno;String sql ="update emp set sal = sal + 500 where empno = "+empno;//5.执行之  执行增删改sql:  Statement的 int executeUpdate(sql)//     执行查询sql: Statement的 ResultSet executeQuery(sql)int rs = statement.executeUpdate(sql);if(rs > 0){//System.out.println("删除成功");System.out.println("加薪成功");}} catch (ClassNotFoundException e) {//Driver类找不到//出现原因: 1. 驱动jar没到导入  2. 驱动类包.类名字符串写错e.printStackTrace();} catch (SQLException throwables) {//出现原因: 1. 数据库服务没有开启  2. url写错  3. 用户名错误  4.密码错误throwables.printStackTrace();}finally{//倒序关try {if(statement != null) {statement.close();}if(conn != null) {conn.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}}}
http://www.lryc.cn/news/199285.html

相关文章:

  • SAP 第三方销售/单独采购
  • yxy销售网站后台管理系统
  • 【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅲ—— 颁发自签名证书
  • Hadoop3教程(十九):MapReduce之ETL清洗案例
  • 数据库设计阶段-架构真题(五十七)
  • python控制Windows桌面程序自动化模块uiautomation
  • Serializable 和Parcelable的区别
  • dubbogo-02 将服务注册到nacos
  • postgresql 配置文件 与 修改配置如何启用
  • 物联网专业前景怎么样?
  • JVM垃圾回收算法介绍
  • 紫光同创FPGA实现HSSTLP高速接口通信,8b/10b编解码数据回环,提供PDS工程源码和技术支持
  • Web前端—盒子模型:选择器、PxCook、盒子模型、正则表达式、综合案例(产品卡片与新闻列表)
  • C++ vector类模拟实现
  • FastAPI+Pydantic使用自定义参数校验+自定义异常+全局异常捕获
  • Python综合练习题
  • SpringCloud+Nacos集成Seata-1.7.0分布式事务
  • 任务调度框架-如何实现定时任务+RabbitMQ事务+手动ACK
  • 修炼k8s+flink+hdfs+dlink(六:学习k8s)
  • 红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[4]客户端与服务端连接
  • Qt Designer生成ui文件,如何转py文件,如何运行
  • Python数据挖掘:自动售货机销售数据分析与应用
  • 【设计模式】设计模式概述
  • 第六届“中国法研杯”司法人工智能挑战赛进行中!
  • 关于 passing ‘const xx’ as ‘this’ argument of 的错误
  • 数据结构和算法(13):优先级队列
  • 面试经典150题——Day15
  • web APIs——第一天(上)
  • 【Leetcode】215. 数组中的第K个最大元素
  • 服务器数据恢复-RAID5常见故障的数据恢复方案