热门标签 | 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



推荐阅读
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • openGauss每日一练第 12 天 |学习openGauss定义数据类型
    自己安装的openGauss环境启动openGaussgsctlDgaussdatadb1start登录openGaussgsqldpostgresp26000r1.创建一 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 使用WinForms 实现 RabbitMQ RPC 示例
    本文通过两个WinForms应用程序演示了如何使用RabbitMQ实现远程过程调用(RPC)。一个应用作为客户端发送请求,另一个应用作为服务端处理请求并返回响应。 ... [详细]
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
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社区 版权所有