作者:Alvin
功能:数据库连接与实现增删改查
时间:2019年3月4日08点33分
参考文章:https://www.2cto.com/database/201805/743741.html

一、总结

数据库加载分为以下几个步骤

第一步、加载驱动

MySQL的加载方式
Class.forName("com.mysql.jdbc.Driver");
Oracle的加载方式
Class.forName("oracle.jdbc.driver.OracleDriver");
SQLServer
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

第二步、创建连接

1、分开写形式如下

String url = "jdbc:mysql://127.0.0.1:3306/要连接的数据库表名";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url,username,password);

2、单独写成形式如下

Connection con=DriverManage.getConnection(url,username,password);

Connection con=DriverManage.getConnection("jdbc:mysql://127.0.0.1:3306/要连接的数据库表名",username,password);

3、设置连接时编码方式useUnicode=true&characterEncoding=UTF-8,如

String URL ="jdbc:mysql://127.0.0.1:3306/studentsuser=root&password=123&useUnicode=true&characterEncoding=UTF-8";
con = DriverManager.getConnection(URL);

4、确认是否连接成功

//如果连接成功打印con不为空
System.out.println(con);  

第三步、创建语句执行对象

Statement stmt=con.createStatement();  

第四步、得到数据库执行操作结果

一般情况下有如下几个执行类型

1、增加数据

int modifyLinesAdd = stmt.executeUpdate(sql1);//将返回被增加的行数

2、删除数据

int modifyLinesDelete=stmt.executUpdate("delete from 表名 where 条件");//将返回发生修改的条数  

3、修改数据

int modifyLinesSwitch=stmt.executeUpdate();//将返回发生修改的行数

4、查询操作

ResultSet rs=stmt.executQuery("select from 表名");//执行查询,返回的时Set集合

所以再只有再进行数据库查询的时候使用executeQuery()方法,再增、删、改的时候执行的都是executeUpdate()方法
还可以向数据库中添加文件下面以图片为例(因为时添加操作所以仍然使用的时executeUpdate()方法)
添加图片数据源码

File image = new File("C:/Users/lyp/Pictures/桌面背景/1.jpg"); //添加图片的路径
ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`,`icon`)"
+ " VALUES (,,,,);");
ps.setInt(1, numbefore+1);
ps.setString(2, "兰陵王");
ps.setString(3,"男");
ps.setInt(4,500);
fis = new FileInputStream(image);
ps.setBinaryStream(5, (InputStream) fis, (int) (image.length()));
//检查是否添加成功
int s = ps.executeUpdate();
if (s > 0) {
System.out.println("Uploaded successfully !");
} else {
System.out.println("unsucessfull to upload image.");
}

查询操作案例

ResultSet rs.stmt.executeQuery("select from student");
//处理执行后的结果rs
rs.next()用于判断下一项是否存在,如果存在,将返回true
while(rs.next()){ int id=rs.getInt("id");//得到id这一列的数据
String name=rs.getString("names");//得到姓名
String gender=rs.getString("gender");//得到性别
int age=rs.getAge("age");//得到年龄
}

第五步、执行完毕数据库的操作必须依次关闭打开的所有连接

//关闭rs
rs.close();
//关闭stmt
stmt.close();
//关闭con
con.close();

二、完整案例源码

//数据库类源码如下
public class DataBase { public static void main(String[] args) {
int numbefore = 0;
Connection con = null;//链接接口
Statement stmt = null;//发送SQL语句接口
ResultSet rs = null;//返回结果集接口
PreparedStatement ps = null;
FileInputStream fis;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//连接方法一
/*String url = "jdbc:mysql://127.0.0.1:3306/students";//127.0.0.1可以改成localhost,表示本地主机。
String username = "root";
String password = "root";
con = DriverManager.getConnection(url,username,password);*/ //连接方法二,useUnicode=true&characterEncoding=UTF-8是设置编码方式
String URL ="jdbc:mysql://127.0.0.1:3306/studentsuser=root&password=123&useUnicode=true&characterEncoding=UTF-8";
con = DriverManager.getConnection(URL); //如果连接成功打印con不为空
System.out.println(con);
stmt = con.createStatement();
//con.close(); //查询数据库中表的值,并且打印出来
rs = stmt.executeQuery("select * from students_1");
while(rs.next()) { //next()方法控制行数,一行一行读出返回结果集,直到null
int id = rs.getInt("id");//获取id这一列的数据
String name = rs.getString(2);//获取第二列数据
String sex = rs.getString("sex");
int age = rs.getInt("age");
System.out.println("编号="+id+",姓名="+name+",性别="+sex+",年龄="+age);
//计算表中数据的行数
numbefore = numbefore + 1;
} //打印出操作数据前的行数
System.out.println("操作前数据为"+numbefore+"行"); //添加图片数据
File image = new File("C:/Users/lyp/Pictures/桌面背景/1.jpg"); //添加图片的路径
ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`,`icon`)"
+ " VALUES (,,,,);");
ps.setInt(1, numbefore+1);
ps.setString(2, "兰陵王");
ps.setString(3,"男");
ps.setInt(4,500);
fis = new FileInputStream(image);
ps.setBinaryStream(5, (InputStream) fis, (int) (image.length()));
//检查是否添加成功
int s = ps.executeUpdate();
if (s > 0) {
System.out.println("Uploaded successfully !");
} else {
System.out.println("unsucessfull to upload image.");
} //添加一行数据
//使用SQL语句:INSERT INTO `students`.`students_1` (`id`, `name`, `sex`, `age`) VALUES ('1','小七', '女', '10'); 添加数据
/*String sql1 = "INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES ('1','小七', '女', '10');";
int result1 = stmt.executeUpdate(sql1);
System.out.println("有"+result1+"行记录被修改");*/ //动态添加一行数据
/*ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES (,'小七', '女', '10');");
ps.setInt(1, numbefore+1);
int result_x = ps.executeUpdate();
System.out.println("有"+result_x+"行记录被修改");*/ //修改一个数据
//使用SQL语句:UPDATE `students`.`students_1` SET `name` = '康纳' WHERE `age` = 12 AND `sex` = '男':修改age=12和sex=男的数据的name为康纳
String sql2 = "UPDATE `students`.`students_1` SET `name` = '康纳' WHERE `id`= '4' AND `age` = '12' AND `sex` = '男'; ";
int result2 = stmt.executeUpdate(sql2);
System.out.println("有"+result2+"行记录被修改"); //删除一行数据
//使用SQL语句:DELETE FROM `students`.`students_1` WHERE `id` = '5' ; 删除id=5的一行
/*String sql3 = "DELETE FROM `students`.`students_1` WHERE `id` = '8' ; ";
int result3 = stmt.executeUpdate(sql3);
System.out.println("有"+result3+"行记录被修改");*/ } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {//依次关闭数据库接口
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
} } }

JDBC连接数据库及其执行操作的更多相关文章

  1. java-Eclipse中使用JDBC连接数据库及相关操作

    准备工作:mysql-connector-java-5.1.6-bin.jar配置 package com.job; import java.sql.Connection; import java.s ...

  2. JDBC连接数据库操作

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  3. java中JDBC连接数据库操作的基本步骤

    JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...

  4. Java操作数据库——使用JDBC连接数据库

    Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...

  5. 【Mybatis源码解析】- JDBC连接数据库的原理和操作

    JDBC连接数据库的原理和操作 JDBC即Java DataBase Connectivity,java数据库连接:JDBC 提供的API可以让JAVA通过API方式访问关系型数据库,执行SQL语句, ...

  6. 学习笔记-JDBC连接数据库操作的步骤

    前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...

  7. db2的select语句在db2 client上执行正确,JDBC连接数据库时报错

    db2的select语句在db2 client上执行正确,JDBC连接数据库时报错. sql语句是:select ...from QUALIFIER.tableName fetch first 21 ...

  8. JDBC连接数据库

    JDBC连接数据库 1.加载JDBC驱动程序. Class.forName("com.mysql.jdbc.Driver"); 建立连接,. Connection conn = D ...

  9. java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

随机推荐

  1. Python日志记录(logging)

    import logging logfile = 'e:\\a.txt' # logging.basicConfig(filename=logfile,level=logging.INFO) # lo ...

  2. 《C++ Primer Plus》读书笔记之十—类和动态内存分配

    第12章 类和动态内存分配 1.不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存.可以在类声明之外使用单独的语句进行初始化,这是因为静态类成员是单独存储的,而不是对象的 ...

  3. 铁乐学python27_模块学习2

    大部份内容摘自博客http://www.cnblogs.com/Eva-J/ collections模块 在内置数据类型(dict.list.set.tuple)的基础上, collections模块 ...

  4. 铁乐学python_day09_作业

    练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for ...

  5. php数据结构之二叉树

    树是一种比较重要的数据结构, 尤其是二叉树.二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之 分,其次序不能任意颠倒. ...

  6. CSS 鼠标样式

    设置鼠标指针放在一个元素边界范围内时所用的光标形状,需要对元素的css属性cursor进行设置. cursor属性可能的值: default 默认光标(通常是一个箭头) auto 默认.浏览器设置的( ...

  7. 编程题1001.A+B Format (20)

    代码链接点击这里 由于有点久没写代码了,本次作业提交了三次才全部正解. 一开始以为是非常容易的题目,就没有带入多组数据,便以最简单的思路提交了代码. 发现了有特别多错误后,我并没有选择马上找同学帮忙, ...

  8. php 访问控制和重载

    一     php 类中定义的private/protected属性,类外部是无法访问的,但是 我们可以通过public方法来访问设置这些属性 如下 <?php class test{ priv ...

  9. PHP常用符号和函数

    (转)最近在写PHP程序的时候发现了一些特殊的PHP符号,例如连续小于符号,三个小于符号,eot,eod,echo示例,print示例等,突然间 发现用这么久的PHP了,竟然连PHP的基本符号都没有认 ...

  10. Java虚拟机18:Java对象大小、对象内存布局及锁状态变化

    一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...