使用jdbc对mysql进行增删改查
建立数据库和数据表
CREATE DATABASE `mysqlTest` DEFAULT CHARACTER SET utf8;
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`num_id` int(11) DEFAULT NULL,
`name` varchar(20) NOT NULL,
`f_name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
简单的demo
package sql; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class JDBCDemo{ public static void main(String[] args) throws SQLException{
insertFunction();
updateFunction();
queryFunction();
} public static void queryFunction() throws SQLException{
Connection temconn = getCon();
String sql = "SELECT id,f_name FROM test where id BETWEEN 2 AND 5 ";
try(PreparedStatement stmt = temconn.prepareStatement(sql)){
ResultSet rs = stmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+"\t"+rs.getString(2));
//或者用列名做参数,可读性好,性能差一些
System.out.println(rs.getInt("id")+"\t"+rs.getString("f_name"));
}
}catch (SQLException e) {
e.printStackTrace();
// TODO: handle exception
}
temconn.close();
} public static void updateFunction() throws SQLException{
Connection temconn = getCon();
String sql = "UPDATE test SET f_name='update2' WHERE id BETWEEN 5 AND 10 ";
try(PreparedStatement stmt = temconn.prepareStatement(sql)){
int counts = stmt.executeUpdate();
System.out.println(counts);
}catch (SQLException e) {
e.printStackTrace();
// TODO: handle exception
}
temconn.close();
} public static void insertFunction() throws SQLException{
Connection temconn = getCon();
try {
//关闭自动提交,即开启事务
temconn.setAutoCommit(false);
for(int i=0;i<10;i++){
int id = i;
String sql = "INSERT INTO test (num_id,name,f_name) VALUES(?,?,?);";
try(PreparedStatement stmt = temconn.prepareStatement(sql)){
stmt.setInt(1, id);
stmt.setString(2, "娜娜"+id);
stmt.setString(3, "f娜娜3"+id);
stmt.execute();
}catch(Exception e){
e.printStackTrace();
}
}
//事务提交
temconn.commit();
} catch (SQLException e1) {
e1.printStackTrace();
//发生异常则回滚
temconn.rollback();
}
temconn.close();
} public static Connection getCon(){
Connection tmpconn = null;
System.out.println("初始化时执行了public static Connection getCon()");
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/mysqlTest?characterEncoding=UTF-8";
String UserName = "root";
String Password = "password";
tmpconn = DriverManager.getConnection(url, UserName, Password);
// tmpconn.setAutoCommit(false);
}catch(Exception e){
e.printStackTrace();
}
return tmpconn;
}
}
多线程安全的插入demo
package sql; import java.sql.Connection;
import java.sql.DriverManager;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.LinkedBlockingQueue; public class LearnJDBC implements Runnable{ private static LinkedBlockingQueue<Connection> conQueue = null;
//线程数
private static int threadCounts = 3;
// 每个线程的循环数
private static int forNumber = 3; public static void main(String[] args) throws InterruptedException{
System.out.println("---------------------导入开始"+getNowTime()+"--------------");
createConnections(threadCounts);
LearnJDBC st = new LearnJDBC();
for (int i = 0;i<threadCounts;i++){
new Thread(st,"线程:"+i).start();
}
} public static void insertFunction(String threadName) throws InterruptedException{
Connection temconn = conQueue.take();
int threadNumber = Integer.parseInt(threadName.split(":")[1]);
for(int i=0;i<forNumber;i++){
int id = i;
String sql = "INSERT INTO test (num_id,name,f_name) values(?,?,?);";
try(java.sql.PreparedStatement stmt = temconn.prepareStatement(sql)){
stmt.setInt(1, id*threadNumber);
stmt.setString(2, "娜娜"+id+":"+threadName);
stmt.setString(3, "f娜娜"+id+":"+threadName);
stmt.execute();
}catch(Exception e){
e.printStackTrace();
}
}
conQueue.put(temconn);
System.out.println(threadName+"---导入结束"+getNowTime()+"--------------");
} @Override
public void run() {
try {
insertFunction(Thread.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
} // 产生一个简易的连接池
public static void createConnections(int num){
try {
conQueue = getconQueue(num);
} catch (InterruptedException e) {
e.printStackTrace();
}
} public static LinkedBlockingQueue<Connection> getconQueue(int num) throws InterruptedException {
LinkedBlockingQueue<Connection> temconQueue = new LinkedBlockingQueue<Connection>();
for(int i=0; i<num; i++) {
temconQueue.put(getCon());
}
return temconQueue;
} public static Connection getCon(){
Connection tmpconn = null;
System.out.println("初始化时执行了public static Connection getCon()");
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/mysqlTest?characterEncoding=UTF-8";
String UserName = "root";
String Password = "password";
tmpconn = DriverManager.getConnection(url, UserName, Password);
// tmpconn.setAutoCommit(false);
}catch(Exception e){
e.printStackTrace();
}
return tmpconn;
} public static String getNowTime(){
return (new SimpleDateFormat("HH:mm:ss")).format(new Date());
} public static int getRandomNumber(int range){
int number = new Random().nextInt(range) + 1;
return number;
} }
使用jdbc对mysql进行增删改查的更多相关文章
- 通过JDBC进行简单的增删改查(以MySQL为例) 目录
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- Java通过JDBC进行简单的增删改查(以MySQL为例)
Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...
- 通过JDBC进行简单的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- 使用MySQL练习增删改查时因为版本问题出现连接错误
使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...
- MySQL数据库(增删改查语句)
MySQL数据库(增删改查语句)一.登录数据库:----> mysql -uroot -proot;(对应用户名和密码)二.SQL语句: 数据定义语言DDL 用来定义数据库.表.列,关 ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- Asp.Net操作MySql数据库增删改查
Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git 1.安装MySQL数据库 ...
- Mysql 的 增删改查
mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...
随机推荐
- 第二讲:vcs debugging basics
要求: 1.describe three methods of debugging verilog code using vcs 2.invoke ucli debugger(不重要) 3.debug ...
- Django框架基础知识05-自定义模板标签与过滤器
根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...
- 第三天,小作业,表达式,while循环
num += 1 等价于 num = num + 1num -= 1 等价于 num = num - 1num *= 2 等价于 num = num * 2num /= 2 等价于 num = num ...
- 数据结构( Pyhon 语言描述 ) — — 第4章:数据和链表结构
数据结构是表示一个集合中包含的数据的一个对象 数组数据结构 数组是一个数据结构 支持按照位置对某一项的随机访问,且这种访问的时间是常数 在创建数组时,给定了用于存储数据的位置的一个数目,并且数组的长度 ...
- 剑指Offer(书):重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...
- Struts2入门(1)——搭建简单的环境
步骤: 1.下载Struts2的开发包. 2.创建Web项目. 3.导入需要的jar包到项目里. 4.在web.xml文件里面配置struts2的核心控制器,也就是一个过滤器. 5.编写Action类 ...
- GitLab 安装和配置
一.GitLab 简介 GitLab 是一个利用Ruby on Rails 开发的开源版本控制系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与GitHub类 ...
- luogu2633 Count on a tree
主席树放到树上而已 #include <algorithm> #include <iostream> #include <cstdio> using namespa ...
- Python的3种格式化字符串方法
Python中有3种format字符串的方式: 传统C语言式 命名参数 位置参数 1. 传统C语言式 和c语言里面的 sprintf 类似,参数格式也一样 title = "world&qu ...
- waiting TTFB 时间优化
百度百科解释:获取在接收到响应的首字节前花费的毫秒数. 根据chrome浏览器,具体请求链接的这个时间,对反应慢的页面进行优化.