JAVAapi—数据库连接
介绍:
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—数据库连接相关推荐
- Java使用独立数据库连接池(DBCP为例)
目前,绝大多数的软件系统都会使用数据库,而在软件构建起来之后,访问数据库又成为软件系统性能的短板(I/O操作).一般来说一次访问数据库就需要一个数据库连接.而每次创建数据库连接都需要访问,分配空闲资源 ...
- 4.Java数据库连接_1.JDBC (Java DB Connection)简介
//============================================================================ Mysql安装参考: http://blo ...
- JDBC数据库连接池练习题
<JDBC数据库连接池练习题> 文章目录 单选题 多选题 判断题 填空题 单选题 1. 下面选项中,能够将游标从当前位置向下移一行的方法是( ). A.next() B.absolute( ...
- HBase详解(对hbase集群搭建、读写流程、hbase的javaApi等细致入微的讲解与保姆级的图解)
学HBase的意义是什么 我本想用MySQL来与HBase作比较,但发现他们两者毫无可比性,因为两者运用领域不同,各自有各自的优点,就好比爬山穿登山鞋,潜水穿脚蹼一般. 一门技术的兴起,一个优秀的开源 ...
- Hbase教程(四) Hbase数据库JavaAPI接口
Hbase教程(四) Hbase数据库JavaAPI接口 Hbase是一个分布式的.面向列的开源数据库,HDFS文件操作常有两种方式,一种是命令行方式,即Hbase提供了一套与Linux文件命令类似的 ...
- c#打开数据库连接池的工作机制_数据库连接池-tomcat-jdbc使用笔记
现在 主流的数据库连接池有:Proxool.C3P0.DBCP.tomcat-jdbc.Druid.其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池. Tomcat 在 7.0 ...
- Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10
问题描述: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10at com.alibab ...
- Druid数据库连接池使用参考
一:添加相应依赖 druid-1.0.9.jar: mysql-connector-java-5.1.48-bin.jar 二:编写properties文件 放置位置在src中: driverClas ...
- 2021年大数据HBase(五):HBase的相关操作JavaAPI方式
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-JavaAPI方式 一.需求说明 ...
- Lumen框架多数据库连接配置方法
Lumen作为一款API导向很浓的框架,配置极简化,默认只支持一路DB配置 然而随着业务复杂度的提高,引入多个数据库连接似乎无法避免,下面介绍一下LUMEN连接多个数据库的配置方法: 修改.env文件 ...
最新文章
- 年轻群体当道,哈弗F7如何赢得芳心?
- 想要成为JAVA高手的25个学习目标
- 【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++
- 通过这些简单的步骤从头开始学习Java
- 用鼠标选择模型表面两点并连线
- 今晚8点,Oracle ACE男神Roger详解Oracle中为什么没有double write?
- 【华为云技术分享】MongoDB经典故障系列三:副本集延迟太高怎么办?
- 游戏经济系统分析:通货与交易
- linux中运行环境变量,linux下的环境变量详解
- Windows搭建Eclipse+JDK+SDK的Android
- 乱码原因产生和解决方案
- [攻防世界]crypto新手练习区Caesar
- 笔记Mac下配置nginx+rtmp模块推流服务器碰到的问题:Error: This tap is now empty as all its formulae were migrated
- 黑五节日营销,Facebook广告投放指南
- OTA市场寡头竞争态势严峻,同程艺龙赴港IPO能否改变现状?
- 3万字英国留学生Java后台面经,中offer率5/7 精
- 课程向:深度学习与人类语言处理 ——李宏毅,2020 (P10)
- AnyProxy安装使用【Windows】
- 【人工智能】数据科学2019发展趋势有哪些?计算机先驱艾伦•图灵这样说!
- 最小二乘法拟合三维直线
热门文章
- 计算机科学家王选 题,李星、王永民获2016年王选奖
- 农业物联网系统功能特点
- 智能营销模型-Uplift Model详解及Python使用
- 基于MATLAB视频的人体姿态检测
- android刷机包基带,手机刷机有必要刷底包基带吗?刷安卓机中基带/底包/固件详解...
- I2C | i2c_msg
- iOS耳机红外线遥控器
- linux解压rar.gz,Linux tar.gz 、zip、rar 解压 压缩命令
- win10小课堂:桌面快捷方式小箭头去除与恢复方法
- react梳理之redux