热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JDBC操作MySQL数据库案例

JDBC操作MySQL数据库案例1importjava.sql.Connection;2importjava.sql.DriverManager;3importjava.sql.P

JDBC操作MySQL数据库案例

1 import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.PreparedStatement;
4 import java.sql.ResultSet;
5 import java.sql.Statement;
6
7 import org.junit.Test;
8
9 public class JDBCTest {
10 @Test
11 public void test() throws Exception {
12 Connection con = null;//定义引用
13 Statement stmt = null;
14 ResultSet rs = null;
15 //规范的代码格式,try catch finally
16 try {
17 String driverClassName = "com.mysql.jdbc.Driver";
18 String url = "jdbc:mysql://localhost:3306/exam";
19 String username = "root";
20 String password = "123";
21
22 Class.forName(driverClassName); //加载
23 con = DriverManager.getConnection(url, username, password); //连接
24 stmt = con.createStatement(); //可以理解为创建SQL语句发射器
25
26 //executeUpdate方法,可以执行增删改语句(INSERT, UPDATE, DELETE),返回被改变的记录条数
27 String sql="DELETE FROM stu";
28 int r = stmt.executeUpdate(sql);
29 System.out.println("共删除了"+r+"条记录!");
30
31 //executeQuery方法,用于执行查询操作(SELECT),返回结果集
32 String sql2="select * from emp";
33 rs = stmt.executeQuery(sql2);
34 while(rs.next()) { //把光标向下移动一行,并判断下一行是否存在!
35 int empno = rs.getInt(1); //通过列编号来获取该列的值!
36 String ename = rs.getString("ename"); //通过列名称来获取该列的值
37 double sal = rs.getDouble("sal");
38 System.out.println(empno + ", " + ename + ", " + sal);
39 }
40 } catch(Exception e) {
41 throw new RuntimeException(e);
42 } finally {
43 // 一定要关闭!!!!!!
44 if(rs != null) rs.close();
45 if(stmt != null) stmt.close();
46 if(con != null) con.close();
47 }
48 }
49 @Test
50 /**
51 * 预处理方式
52 * 优点:灵活,效率高,防SQL攻击
53 * SQL攻击例子:
54 * 若:sql = "select * from t_user where username='" + username + "' and password='" + password + "'";
55 * username = "a' or 'a'='a";
56 * password = "a' or 'a'='a";
57 * 最后拼成的语句为:
58 * select * from t_user where username='a' or 'a'='a" and password='a' or 'a'='a'
59 * 永远为true。
60 */
61 public void test2() throws Exception {
62 Connection con = null;//定义引用
63 ResultSet rs = null;
64 PreparedStatement pstmt=null;
65 try {
66 String driverClassName = "com.mysql.jdbc.Driver";
67 //mysql默认预处理是关闭的,加上这两个参数之后可以开启预处理
68 String url = "jdbc:mysql://localhost:3306/exam?useServerPrepStmts=true&cachePrepStmts=true";
69 String username = "root";
70 String password = "123";
71 Class.forName(driverClassName);
72 con = DriverManager.getConnection(url, username, password);
73
74 String sql="select * from emp where empno=? and job=?";
75 pstmt = con.prepareStatement(sql);
76 pstmt.setInt(1, 1001);
77 pstmt.setString(2, "文员");
78 rs =pstmt.executeQuery();
79 if(rs.next())
80 {
81 System.out.println(rs.getString("ename"));
82 }
83 } catch(Exception e) {
84 throw new RuntimeException(e);
85 } finally {
86 if(rs != null) rs.close();
87 if(pstmt != null) pstmt.close();
88 if(con != null) con.close();
89 }
90 }
91 }

View Code

 

转:https://www.cnblogs.com/fengmingyue/p/6040463.html



推荐阅读
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Java中Hashtable的clear()方法,该方法用于清除和移除指定Hashtable中的所有键。通过示例程序演示了clear()方法的使用。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了Java调用Windows下某些程序的方法,包括调用可执行程序和批处理命令。针对Java不支持直接调用批处理文件的问题,提供了一种将批处理文件转换为可执行文件的解决方案。介绍了使用Quick Batch File Compiler将批处理脚本编译为EXE文件,并通过Java调用可执行文件的方法。详细介绍了编译和反编译的步骤,以及调用方法的示例代码。 ... [详细]
author-avatar
董鹏飞80
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有