连接数据库

要访问数据库,首先要加载数据库的驱动程序(只需要在第一次访问数据库时加载一次),然后每次访问数据时创建一个Connection对象,之后执行操作数据库的SQL语句,最后在完成数据库操作后销毁前面创建的Connection对象,释放与数据库的连接。

import java.sql.*; //导入java.sql包public class Conn { // 创建类ConnConnection con; // 声明Connection对象public Connection getConnection() { // 建立返回值为Connection的方法try { // 加载数据库驱动类Class.forName("com.mysql.jdbc.Driver");System.out.println("数据库驱动加载成功");} catch (ClassNotFoundException e) {e.printStackTrace();}try { // 通过访问数据库的URL获取数据库连接对象con = DriverManager.getConnection("jdbc:mysql:"+ "//127.0.0.1:3306/test", "root", "123456");System.out.println("数据库连接成功");} catch (SQLException e) {e.printStackTrace();}return con; // 按方法要求返回一个Connection对象}public static void main(String[] args) { // 主方法Conn c = new Conn(); // 创建本类对象c.getConnection(); // 调用连接数据库的方法}
}

向数据库发送SQL语句

getConnection()方法只是获取与数据库的连接,要执行SQL语句首先要获得Statement类对象,通过创建的连接数据库对象的createStatement()方法可获得Statement对象。

处理查询结果集

有了Statement对象以后,可调用相应的方法实现对数据库的查询和修改,并将查询的结果集存放在ResultSet类的对象中。

顺序查询

ResultSet类的next()方法的返回值是boolean类型的数据,当游标移动到最后一行之后会返回false。

import java.sql.*;public class Gradation { // 创建类static Connection con; // 声明Connection对象static Statement sql; // 声明Statement对象static ResultSet res; // 声明ResultSet对象public Connection getConnection() { // 连接数据库方法try {Class.forName("com.mysql.jdbc.Driver");con = DriverManager.getConnection("jdbc:mysql:"+ "//127.0.0.1:3306/test", "root", "123456");} catch (Exception e) {e.printStackTrace();}return con; // 返回Connection对象}public static void main(String[] args) { // 主方法Gradation c = new Gradation(); // 创建本类对象con = c.getConnection(); // 与数据库建立连接try {sql = con.createStatement(); // 实例化Statement对象// 执行SQL语句,返回结果集res = sql.executeQuery("select * from tb_stu");while (res.next()) { // 如果当前语句不是最后一条则进入循环String id = res.getString("id"); // 获取列名是"id"的字段值// 获取列名是"name"的字段值String name = res.getString("name");// 获取列名是"sex"的字段值String sex = res.getString("sex");// 获取列名是"birthday"的字段值String birthday = res.getString("birthday");System.out.print("编号:" + id); // 将列值输出System.out.print(" 姓名:" + name);System.out.print(" 性别:" + sex);System.out.println(" 生日:" + birthday);}} catch (Exception e) {e.printStackTrace();}}
}

模糊查询

SQL语句中提供了LIKE操作符用于模糊查询,可使用“%”来代替0个或多个字符,使用下划线“_”来代替一个字符。

import java.sql.*;public class Train { // 创建类Trainstatic Connection con; // 声明Connection对象static Statement sql; // 声明Statement对象static ResultSet res; // 声明ResultSet对象public Connection getConnection() { // 与数据库连接方法try {Class.forName("com.mysql.jdbc.Driver");con = DriverManager.getConnection("jdbc:mysql:"+ "//127.0.0.1:3306/test", "root", "123456");} catch (Exception e) {e.printStackTrace();}return con; // 返回Connection对象}public static void main(String[] args) { // 主方法Train c = new Train(); // 创建本类对象con = c.getConnection(); // 获取与数据库的连接try { // try语句捕捉异常sql = con.createStatement(); // 实例化Statement对象res = sql.executeQuery("select * from tb_stu where name like '张%'");// 执行SQL语句while (res.next()) { // 如果当前记录不是结果集中的最后一条,进入循环体String id = res.getString(1); // 获取id字段值String name = res.getString("name"); // 获取name字段值String sex = res.getString("sex"); // 获取sex字段值String birthday = res.getString("birthday"); // 获取birthday字段值System.out.print("编号:" + id); // 输出信息System.out.print(" 姓名:" + name);System.out.print(" 性别:" + sex);System.out.println(" 生日:" + birthday);}} catch (Exception e) { // 处理异常e.printStackTrace(); // 输出异常信息}}
}

预处理语句

向数据库发送一个SQL语句,数据库中的SQL解释器负责把SQL语句生成底层的内部命令,然后执行该命令,完成相关的数据操作。如果不断地向数据库提交SQL语句,肯定会增加数据库中SQL解释器的负担,影响执行的速度。

对于JDBC,可以通过Connection对象的preparedStatement(String sql)方法对SQL语句进行预处理,生成数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,通过调用该对象的相应方法执行底层数据库命令。这样应用程序能针对连接的数据库实现将SQL语句解释为数据库底层的内部命令,然后让数据库执行这个命令,这样可以减轻数据库的负担,提高访问数据库的速度。

import java.sql.*;
public class Prep { // 创建类Perpstatic Connection con; // 声明Connection对象static PreparedStatement sql; // 声明预处理对象static ResultSet res; // 声明结果集对象public Connection getConnection() { // 与数据库连接方法try {Class.forName("com.mysql.jdbc.Driver");con = DriverManager.getConnection("jdbc:mysql:"+ "//127.0.0.1:3306/test", "root", "123456");} catch (Exception e) {e.printStackTrace();}return con; // 返回Connection对象}public static void main(String[] args) { // 主方法Prep c = new Prep(); // 创建本类对象con = c.getConnection(); // 获取与数据库的连接try {// 实例化预处理对象sql = con.prepareStatement("select * from tb_stu"+ " where id = ?");sql.setInt(1, 4); // 设置参数res = sql.executeQuery(); // 执行预处理语句// 如果当前记录不是结果集中最后一行,则进入循环体while (res.next()) {String id = res.getString(1); // 获取结果集中第一列的值String name = res.getString("name"); // 获取name列的列值String sex = res.getString("sex"); // 获取sex列的列值// 获取birthday列的列值String birthday = res.getString("birthday");System.out.print("编号:" + id); // 输出信息System.out.print(" 姓名:" + name);System.out.print(" 性别:" + sex);System.out.println(" 生日:" + birthday);}} catch (Exception e) {e.printStackTrace();}}
}

添加、修改、删除记录

可以通过SQL语句对数据执行添加、修改和删除操作。可通过PreparedStatement类的指定参数动态地对数据表中原有数据进行修改操作,并通过executeUpdate()方法执行更新语句。

import java.sql.*;public class Renewal { // 创建类static Connection con; // 声明Connection对象static PreparedStatement sql; // 声明PreparedStatement对象static ResultSet res; // 声明ResultSet对象public Connection getConnection() {try {Class.forName("com.mysql.jdbc.Driver");con = DriverManager.getConnection("jdbc:mysql:"+ "//127.0.0.1:3306/test", "root", "123456");} catch (Exception e) {e.printStackTrace();}return con;}public static void main(String[] args) {Renewal c = new Renewal(); // 创建本类对象con = c.getConnection(); // 调用连接数据库方法try {sql = con.prepareStatement("select * from tb_stu"); // 查询数据库res = sql.executeQuery(); // 执行SQL语句System.out.println("执行增加、修改、删除前数据:");while (res.next()) {String id = res.getString(1);String name = res.getString("name");String sex = res.getString("sex");String birthday = res.getString("birthday"); // 遍历查询结果集System.out.print("编号:" + id);System.out.print(" 姓名:" + name);System.out.print(" 性别:" + sex);System.out.println(" 生日:" + birthday);}sql = con.prepareStatement("insert into tb_stu(name,sex,birthday) values(?,?,?)");sql.setString(1, "张一"); // 预处理添加数据sql.setString(2, "女");sql.setString(3, "2012-12-1");sql.executeUpdate();sql = con.prepareStatement("update tb_stu set birthday "+ "= ? where id = ? ");sql.setString(1, "2012-12-02"); // 更新数据sql.setInt(2, 1); // 更新数据sql.executeUpdate();Statement stmt = con.createStatement();stmt.executeUpdate("delete from tb_stu where id = 1");// 查询修改数据后的tb_stu表中数据sql = con.prepareStatement("select * from tb_stu");res = sql.executeQuery(); // 执行SQL语句System.out.println("执行增加、修改、删除后的数据:");while (res.next()) {String id = res.getString(1);String name = res.getString("name");String sex = res.getString("sex");String birthday = res.getString("birthday");System.out.print("编号:" + id);System.out.print(" 姓名:" + name);System.out.print(" 性别:" + sex);System.out.println(" 生日:" + birthday);}} catch (Exception e) {e.printStackTrace();}}
}

Java 数据库基本操作相关推荐

  1. Java数据库篇2——数据库基本操作

    Java数据库篇2--数据库基本操作 1.启动.停止.服务 net start mysql net stop mysql 2.登入登出 本地 Mysql -u用户名 -p密码Mysql -u用户名 - ...

  2. [JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 前一篇文章讲解 ...

  3. 1Python全栈之路系列之MySQL数据库基本操作

    Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司 ...

  4. 【MySQL】数据库基本操作、表的操作

    一.数据库 1.什么是数据库 2.数据库基本操作 2.1.显示数据库 2.2. 创建数据库 2.3.选中数据库 2.4.删除数据库 3.数据库分类 4.MySQL 安装 二.数据表的使用 1. 常用数 ...

  5. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

  6. java通用库,java数据库访问通用种

    java数据库访问通用类; package org.studentmanager.commons; /** * java数据库访问通用类; * @author clplain; * */ import ...

  7. java mysql框架_盘点 Java 数据库访问框架——究竟哪个更适合你

    本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层).假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库.下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发 ...

  8. java数据库驱动_Java数据库驱动链接大全

    Java数据库驱动链接大全 MySQL: String Driver="com.mysql.jdbc.Driver";    //驱动程序 String URL="jdb ...

  9. SQL Server数据库基本操作(一)

    SQL Server数据库基本操作 基本表的定义.删除与修改 1.创建基本表 2.修改基本表 3.删除基本表 基本表的定义.删除与修改 创建数据库 CREATE DATABASE STUDENT 1. ...

  10. mysql数据库基本操作总结与归纳

    mysql数据库基本操作总结与归纳 登录命令 mysql -u 用户名 -p 密码 列如: [root@localhost ~]# mysql -u root -p [root@localhost ~ ...

最新文章

  1. 企业网络推广——企业网络推广专员浅析网站关键词优化要注意哪些问题
  2. 面板——卡片面板、常规折叠面板、手风琴折叠
  3. POJ3244(工科数学分析)
  4. kafka 的pom文件_基于SparkStreaming+Kafka+HBase实时点击流案例
  5. 插件化开发与GUI开发
  6. struts1(一)流程分析
  7. BitTorrent详解
  8. java effective
  9. 我从华为身上学到的项目管理经验 -- 设计篇
  10. 广发股票交易接口做什么的?
  11. C#之基于winform窗体绘制简单图形
  12. SolidWorks 部分插件不显示
  13. 阿尔伯塔大学计算机科学专业课程,[阿尔伯塔大学]计算机/计算机工程专业
  14. Word删除空白页方法汇总
  15. Java修饰符都有什么
  16. 【DevOps】我们忽视了Daily Build(每日构建)吗?
  17. rust高墙大门怎么造_rust自己建的高墙怎么拆 | 手游网游页游攻略大全
  18. 冈萨雷斯《数字图像处理(第三版)》中文版纠错
  19. Linux下mpstat命令下,linux mpstat命令使用详解
  20. android 音视频播放 SDK,几句代码即可实现音视频播放功能~

热门文章

  1. 国内各大免费邮箱的smtp
  2. 手把手教你学习DSP_硬件设计
  3. FFmpeg安装及将rtsp流转hls协议流通过nginx进行视频直播
  4. c语言指针和数组的转换,指针和数组的转换
  5. Android11 WAPI证书安装流程
  6. 怎么接入WAPI网络防止被蹭网
  7. 硬盘分区 整G整数法(从1g到200g最精确的整数分区)
  8. Beyond Compare设置文本文件和Delphi源码默认的打开格式为ANSI
  9. 半导体界仙童“八叛逆”又一人去世,仅存一人!
  10. MPQ Storm库 源代码分析 一个