java之jdbc使用
简单使用
Statement
通过 Statement 执行 ,其实是拼接 sql 语句的。 先拼接 sql 语句,然后在一起执行。
package com.zze.test; import java.sql.*; public class Test1 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { // 注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 建立连接:url:协议+访问的数据库 user:用户名 password:密码 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/1221?serverTimezone=GMT&characterEncoding=utf8", "root", "root"); // 创建statement statement = connection.createStatement(); // 执行查询 String sql = "select * from user"; resultSet = statement.executeQuery(sql); while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println(String.format("%s:%s", id, name)); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } finally { resultSet = null; } try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { statement = null; } try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } finally { connection = null; } } } }
PreparedStatement
相比较以前的 Statement, 预先处理给定的 sql 语句,对其执行语法检查。 在 sql 语句里面使用 ? 占位符来替代后续要传递进来的变量。 后面进来的变量值,将会被看成是字符串,不会产生任何的关键字。
package com.zze.test; import java.sql.*; public class Test3 { public static void main(String[] args) { Connection connection = null; PreparedStatement statement = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb?serverTimezone=GMT&characterEncoding=utf8", "root", "root"); String sql = "insert into user (name) values (?)"; statement = connection.prepareStatement(sql); statement.setString(1, "王五"); int flag = statement.executeUpdate(); System.out.println(flag); if (flag > 0) { System.out.println("添加成功"); } else { System.out.println("添加失败"); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { statement = null; } try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } finally { connection = null; } } } }
工具类封装
package com.zze.util; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class JDBCUtil { private static String driverName = null; private static String url = null; private static String user = null; private static String password = null; static { try { // 创建配置文件对象 Properties properties = new Properties(); // 使用类加载器读取src下的资源文件 InputStream resourceAsStream = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); // 读取配置文件 properties.load(resourceAsStream); // 读取属性 driverName = properties.getProperty("driverName"); url = properties.getProperty("url"); user = properties.getProperty("user"); password = properties.getProperty("password"); } catch (IOException e) { e.printStackTrace(); } } /** * 获取连接 * * @return 连接对象 */ public static Connection getConnection() { try { // 注册驱动 com.mysql.cj.jdbc.Driver 中有注册的静态代码块 Class.forName(driverName); // 建立连接:url:协议+访问的数据库 user:用户名 password:密码 Connection connection = DriverManager.getConnection(url, user, password); return connection; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 释放连接资源 */ public static void release(Connection connection, Statement statement, ResultSet resultSet) { if (resultSet != null) closeResultSet(resultSet); if (statement != null) closeStatement(statement); if (connection != null) closeConnection(connection); } private static void closeResultSet(ResultSet rs) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { rs = null; } } private static void closeStatement(Statement st) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { st = null; } } private static void closeConnection(Connection conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } finally { conn = null; } } }
JDBCUtil.java
driverName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/1221?serverTimezone=GMT user=root password=root
jdbc.properties
package com.zze.test; import com.zze.util.JDBCUtil; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; public class Test2 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = JDBCUtil.getConnection(); // 创建statement statement = connection.createStatement(); // 执行查询 String sql = "select * from user"; resultSet = statement.executeQuery(sql); while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println(String.format("%s:%s", id, name)); } } catch (Exception ex) { ex.printStackTrace(); } finally { JDBCUtil.release(connection, statement, resultSet); } } }
完整示例下载
链接:https://pan.baidu.com/s/1iJJ8l-xZ1KgKYuMAiXtxiQ 提取码:pj53
java之jdbc使用的更多相关文章
- Java的JDBC操作
Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...
- JAVA使用JDBC技术操作SqlServer数据库执行存储过程
Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)
Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...
- JAVA使用jdbc连接MYSQL简单示例
以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...
- java之JDBC
java之JDBC 一.什么是JDBC Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提 ...
- java 调用jdbc 实现excel和csv的导入和导出
jdbc 的连接 实体类 package com.gpdi.mdata.web.manage.database.data;public class DBQueryData {private Strin ...
- Java的JDBC事务详解
Java的JDBC事务详解 分类: Hibernate 2010-06-02 10:04 12298人阅读 评论(9) ...
- Java数据库连接--JDBC调用存储过程,事务管理和高级应用
相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...
随机推荐
- 在tmux会话之间共享窗口(Windows & Panes)
去年写过一篇 从Tmux 转到GNU Screen,理由是我可以 在两个显示器上通过PuTTY连接到同一个GNU Screen会话,但两个显示器可以显示不同的窗口(用GNU Screen的术语来说,是 ...
- U-BOOT2016.05 配置内存大小
bootargs 里面有一个 mem 的参数,将这个配置 512M 便是将内存配置为 512M
- MPU6050带字符驱动的i2c从设备驱动2
#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #inclu ...
- hdoj:2048
#include <iostream> using namespace std; ]; ]; int main() { int C; a[] = ; a[] = ; b[] = ; b[] ...
- XCode10 运行app报错
原因很简单:Xcode10起,苹果摒弃了对libstdc++库的支持转而支持libc++库了.为了保证老代码能跑,必须将几个库复制到对应文件夹(见后).同时修改Build Phases中的Link B ...
- IE 浏览器不支持 ES6 Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性
[转]解决老浏览器不支持ES6的方法 现象: Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性或方法 解决方法: 安装babel 引入browser. ...
- log4net 如何关闭Nhibernate产生的大量日志
[参考文献]Log4Net指南 非常完善的Log4net详细说明 C# 使用Log4Net记录日志(进阶篇) 此问题困扰良久 良久 良久 appender filter ,show_sql false ...
- 24小时学通Linux内核之向内核添加代码
睡了个好觉,很晚才起,好久没有这么舒服过了,今天的任务不重,所以压力不大,呵呵,现在的天气真的好冷,不过实验室有空调,我还是喜欢待在这里,有一种不一样的感觉,在写了这么多天之后,自己有些不懂的页渐渐的 ...
- Ubuntu 18.04 Numix主题安装设置
Ubuntu 18.04 Numix主题安装设置 一.首先安装Numix主题 展现效果如下图 1.安装numix sudo add-apt-repository ppa:numix/ppa 2.安装主 ...
- Windows10环境下使用VisualSVN server搭建SVN服务器
参考: Windows10环境下使用VisualSVN server搭建SVN服务器 要搭建个svn用.之前自己的服务器用的乌龟.后来用了这个VisualSVN server. 具体教程见上链接.暂无 ...