介绍:

JDBC(Java DataBase Connectivity) 称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。 有了JDBC,就不必为访问Mysql数据库专门写一个程序,为访问Oracle又专门写一个程序等等。

JDBC核心接口与类JDBC核心类库包含在java.sql包中。

接口:
Connection:特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果。
PreparedStatement:表示预编译的 SQL 语句的对象。
Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
ResultSet :表示数据库结果集的数据表,通常通过执行查询数据库的语句生成 。
CallableStatement :用于执行 SQL 存储过程的接口 。
类:
DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接。
SQLException:有关数据库操作的异常。

加载驱动(只做一次):

1.打出SQLServerDriver,按快捷2.使用Class.forName加载驱动

 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

建立连接(Connection):

String url = "jdbc:sqlserver://localhost:1433;databasename=数据库名称";
//注:SqlServer也可以更换成其他的 (如:MySQL等)
Connection con = DriverManager.getConnection(url, "sa", "sa123");
//注:(url, "sa", "sa123")  这里的是我的SqlServer的连接账号和密码

执行语句(preparedstatement):

PreparedStatement ps = con.prepareStatement("insert into student values(?,?,?)");
//注: ?代表占位符,一个占位符意味着需要一个变量来填充
 Scanner mys=new Scanner(System.in);System.out.println("请输入你的名字");String name=mys.next();System.out.println("请输入你的年龄");int age=mys.nextInt();//默认生日是当前时间Date brithday=new Date(System.currentTimeMillis());int n = ps.executeUpdate();// n就是数据库收到影响的行数// 怎么判断是否操作成功System.out.println(n>0?"成功":"失败");

关闭资源:

 if(con!=null&&!con.isClosed()) {con.close();}if(ps!=null) {ps.close();}

以上的执行语句 增删改查 中有许多代码都是重复的非常的麻烦,下面请看优化版本:

———————————————

首先建立一个包 come.util 在这个包中建立一个帮助类 DBHelper

//使用静态代码块加载驱动static {try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");} catch (ClassNotFoundException e) {e.printStackTrace();}}
//定义连接语句private static final String URL="jdbc:sqlserver://localhost:1433;databasename=api_284";
//获得连接public static Connection getCon() {try {return    DriverManager.getConnection(URL,"sa","123456");} catch (Exception e) {e.printStackTrace();}return null;}
//关闭资源:连接con,执行对象ps,结果集rs  public static void close(Connection con,PreparedStatement ps,ResultSet rs) {try {if (con!=null&&!con.isClosed()) {con.close();}if (ps!=null) {ps.close();  }if (rs!=null) {rs.close();}} catch (Exception e) {e.printStackTrace();}

首先建立一个包 come.dao 在这个包中建立一个dao类 以数据库中的表名开头(如:studedao)

//定义方法private Connection con;private PreparedStatement ps;private ResultSet rs;
//增
public int add(Student stu) {try {con = DBHelper.getCon();String sql = "insert into student values(?,?,?)";ps = con.prepareStatement(sql);ps.setString(1, stu.getName());ps.setInt(2, stu.getAge());ps.setDate(3, stu.getBirthday());return ps.executeUpdate();} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con,ps,rs);}return 0;}
//删
public int delect(int id) {try {con=DBHelper.getCon();ps=con.prepareStatement("delete from student where id=?");ps.setInt(1, id);return ps.executeUpdate();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return 0;}
//改
public int update(Student stu ) {try {con=DBHelper.getCon();String sql="update student set name=? where id=?";ps=con.prepareStatement(sql);ps.setString(1, stu.getName());ps.setInt(2, stu.getId());return ps.executeUpdate();} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return 0;}
//查
public  List<Student> list(){List<Student> list=new ArrayList<Student>();try {con=DBHelper.getCon();ps=con.prepareStatement("select*from student");rs=ps.executeQuery();while (rs.next()) {Student stu=new Student();stu.setId(rs.getInt(1));stu.setName(rs.getString(2));stu.setAge(rs.getInt(3));stu.setBirthday(rs.getDate(4));list.add(stu);  }} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return list;}

JAVAapi—数据库连接相关推荐

  1. Java使用独立数据库连接池(DBCP为例)

    目前,绝大多数的软件系统都会使用数据库,而在软件构建起来之后,访问数据库又成为软件系统性能的短板(I/O操作).一般来说一次访问数据库就需要一个数据库连接.而每次创建数据库连接都需要访问,分配空闲资源 ...

  2. 4.Java数据库连接_1.JDBC (Java DB Connection)简介

    //============================================================================ Mysql安装参考: http://blo ...

  3. JDBC数据库连接池练习题

    <JDBC数据库连接池练习题> 文章目录 单选题 多选题 判断题 填空题 单选题 1. 下面选项中,能够将游标从当前位置向下移一行的方法是( ). A.next() B.absolute( ...

  4. HBase详解(对hbase集群搭建、读写流程、hbase的javaApi等细致入微的讲解与保姆级的图解)

    学HBase的意义是什么 我本想用MySQL来与HBase作比较,但发现他们两者毫无可比性,因为两者运用领域不同,各自有各自的优点,就好比爬山穿登山鞋,潜水穿脚蹼一般. 一门技术的兴起,一个优秀的开源 ...

  5. Hbase教程(四) Hbase数据库JavaAPI接口

    Hbase教程(四) Hbase数据库JavaAPI接口 Hbase是一个分布式的.面向列的开源数据库,HDFS文件操作常有两种方式,一种是命令行方式,即Hbase提供了一套与Linux文件命令类似的 ...

  6. c#打开数据库连接池的工作机制_数据库连接池-tomcat-jdbc使用笔记

    现在 主流的数据库连接池有:Proxool.C3P0.DBCP.tomcat-jdbc.Druid.其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池. Tomcat 在 7.0 ...

  7. Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10

    问题描述: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10at com.alibab ...

  8. Druid数据库连接池使用参考

    一:添加相应依赖 druid-1.0.9.jar: mysql-connector-java-5.1.48-bin.jar 二:编写properties文件 放置位置在src中: driverClas ...

  9. 2021年大数据HBase(五):HBase的相关操作JavaAPI方式

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-JavaAPI方式 一.需求说明 ...

  10. Lumen框架多数据库连接配置方法

    Lumen作为一款API导向很浓的框架,配置极简化,默认只支持一路DB配置 然而随着业务复杂度的提高,引入多个数据库连接似乎无法避免,下面介绍一下LUMEN连接多个数据库的配置方法: 修改.env文件 ...

最新文章

  1. 年轻群体当道,哈弗F7如何赢得芳心?
  2. 想要成为JAVA高手的25个学习目标
  3. 【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++
  4. 通过这些简单的步骤从头开始学习Java
  5. 用鼠标选择模型表面两点并连线
  6. 今晚8点,Oracle ACE男神Roger详解Oracle中为什么没有double write?
  7. 【华为云技术分享】MongoDB经典故障系列三:副本集延迟太高怎么办?
  8. 游戏经济系统分析:通货与交易
  9. linux中运行环境变量,linux下的环境变量详解
  10. Windows搭建Eclipse+JDK+SDK的Android
  11. 乱码原因产生和解决方案
  12. [攻防世界]crypto新手练习区Caesar
  13. 笔记Mac下配置nginx+rtmp模块推流服务器碰到的问题:Error: This tap is now empty as all its formulae were migrated
  14. 黑五节日营销,Facebook广告投放指南
  15. OTA市场寡头竞争态势严峻,同程艺龙赴港IPO能否改变现状?
  16. 3万字英国留学生Java后台面经,中offer率5/7 精
  17. 课程向:深度学习与人类语言处理 ——李宏毅,2020 (P10)
  18. AnyProxy安装使用【Windows】
  19. 【人工智能】数据科学2019发展趋势有哪些?计算机先驱艾伦•图灵这样说!
  20. 最小二乘法拟合三维直线

热门文章

  1. 计算机科学家王选 题,李星、王永民获2016年王选奖
  2. 农业物联网系统功能特点
  3. 智能营销模型-Uplift Model详解及Python使用
  4. 基于MATLAB视频的人体姿态检测
  5. android刷机包基带,手机刷机有必要刷底包基带吗?刷安卓机中基带/底包/固件详解...
  6. I2C | i2c_msg
  7. iOS耳机红外线遥控器
  8. linux解压rar.gz,Linux tar.gz 、zip、rar 解压 压缩命令
  9. win10小课堂:桌面快捷方式小箭头去除与恢复方法
  10. react梳理之redux