作者: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()方法控制行数,一行一行读出返回结果集,直到nullint 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();}}}}}

转载于:https://www.cnblogs.com/kitor/p/10469036.html

JDBC连接数据库及其执行操作相关推荐

  1. Jdbc连接数据库做删除操作

    Jdbc连接数据库做删除操作 package jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.s ...

  2. spring jdbcTemplate中获取jdbc Connection并执行操作

    实际应用例子 在项目中需要获取数据库中元数据相关信息,比如表名,字段名,长度等 jdbcTemplate 可以通过SqlRowSetMetaData 可以获取到部分元数据,但是不能获取备注信息(com ...

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

    JAVA中JDBC连接数据库操作的基本步骤.注:假定连接数据库的用户名为root,密码为root. 步骤一: 定义连接数据库的相关信息 步骤一: 定义连接数据库的相关信息(1) 连接数据库的驱动:8. ...

  4. Java七步创建以JDBC连接数据库的程序

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

  5. JDBC连接数据库过程

    JDBC连接数据库过程 时间: 2009-03-03 20:43来源: 作者: 点击: <script src="http://www.topkc.cn/plus/count.php? ...

  6. JDBC连接数据库总结

    JDBC连接数据库 一下以mysql 数据库连接来说明 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(J ...

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

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

  8. 2、JDBC连接数据库

    1.JDBC连接数据库步骤 加载JDBC驱动程序 建立数据库连接Connection 创建执行SQL的语句Statement 处理执行结果ResultSet 释放资源 2.在项目里配置数据库驱动 右击 ...

  9. JNDI配置DataResource代替JDBC连接数据库

    JNDI配置DataResource代替JDBC连接数据库 1.JDBC和JNDI ​ JDBC就是我们连接数据库的一个标准的Java API,JDBC提供了一系列接口和规范,各个数据库公司根据其JD ...

最新文章

  1. 上帝的指纹——分形与混沌
  2. arthas 排查内存溢出_【spark-tips】spark2.4.0触发的executor内存溢出排查
  3. 在IIS中删除ETag的方法
  4. 《Android系统源代码情景分析》一书正在连载中
  5. vb.net2019-播放声音(wav、mp3等)
  6. SAP Fiori应用里对国际化RTL需求(right-to-left)的支持
  7. 符号说明表怎么做_能看懂这些房屋施工图,说明你家装修没问题了
  8. WebService的简单实现
  9. flutter text 左对齐_【Flutter学习】基本组件之文本组件Text
  10. android json字符串转成json对象_【hive】解析JSON格式字符串
  11. Windowserver2012部署always on
  12. Python绘制酷炫的弦图
  13. 安装“万能解码器”还原真实“解码”(纯以个人兴趣分析)
  14. AB余商c语言编程答案,C语言课后题编程答案
  15. java创建文件的路径_JAVA如何指定路径创建文件?
  16. python中quadratic什么意思_quadratic是什么意思_quadratic的翻译_音标_读音_用法_例句_爱词霸在线词典...
  17. 【百人计划】图形3.5 纹理压缩的格式
  18. Redis常用基本命令(1)
  19. 关于ttyS与ttySAC
  20. 13.14.4 文本文件到电子表格。python编程快速上手--让繁琐工作自动化 第2版。【美】阿尔·斯维加特 Al Sweigart 著 王海鹏 译 中国工信出版集团 人民邮电出版社

热门文章

  1. 1002:输出第二个整数
  2. 大数据WEB阶段Mybatis(二)
  3. Java常用API (四) 包装类
  4. 【Linux】一步一步学Linux——nice命令(127)
  5. 【SSL协议】SSL协议详解
  6. centos7 nat模式配置静态ip_Centos7设置静态IP后无法上网的解决方法
  7. Codeforces 858A. k-rounding 数论
  8. 每天一道LeetCode-----计算二叉树的最大深度及最小深度,判断二叉树是否是高度平衡二叉树
  9. C++学习笔记-----永远不要在派生类中改变虚函数的默认参数值
  10. Pixhawk代码分析-姿态解算篇D