建立数据库和数据表

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进行增删改查的更多相关文章

  1. 通过JDBC进行简单的增删改查(以MySQL为例) 目录

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  2. Java通过JDBC进行简单的增删改查(以MySQL为例)

    Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...

  3. 通过JDBC进行简单的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  4. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  5. 使用MySQL练习增删改查时因为版本问题出现连接错误

    使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...

  6. MySQL数据库(增删改查语句)

    MySQL数据库(增删改查语句)一.登录数据库:---->  mysql -uroot -proot;(对应用户名和密码)二.SQL语句:    数据定义语言DDL  用来定义数据库.表.列,关 ...

  7. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  8. Asp.Net操作MySql数据库增删改查

    Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git  1.安装MySQL数据库 ...

  9. Mysql 的 增删改查

    mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...

随机推荐

  1. 自动化测试如何解析excel文件?

    前言 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是 ...

  2. 关于linux安装kettle的总结

    一.部署准备 1.1 JDK安装配置 命令行键入“cd /etc”进入etc目录 命令行键入“vi profile”打开profile文件 敲击键盘ctrl+F到文件末尾 在末尾处,即第一个~的地方, ...

  3. pwnable.kr cmd1之write up

    看一下源代码: #include <stdio.h> #include <string.h> int filter(char* cmd){ ; r += strstr(cmd, ...

  4. 【HDU 5934】Bomb(强连通缩点)

    Problem Description There are N bombs needing exploding. Each bomb has three attributes: exploding r ...

  5. 【06】sass编译工具(弃)

    [06]编译工具(弃) SASS转译工具 除了使用sass命令来转译SASS文件之外,还可以借助第三方工具完成,目前世面上较为流行的转译工具主要有: Compass.app Scout Codekit ...

  6. Relocation(状压DP)

    Description Emma and Eric are moving to their new house they bought after returning from their honey ...

  7. CodeForce 448C 木片填涂问题

    题目大意:有多片木片需要填涂,可以每次横着涂一行,也可以一次涂一列,当然你涂一行时遇到中间长度不够高的木片,填涂到此中断 这题目运用dfs能更容易的解出,虽然还是十分不容易理解 #include &l ...

  8. 洛谷P2058 海港

    题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船 ...

  9. Windows Server 2003的一些优化设置 (转至网络)

    2003序列号:JCHKR-888KX-27HVK-DT88X-T767M1.禁用配置服务器向导: 禁止“配置你的服务器”(Manage Your Server)向导的出现:在控制面板(Control ...

  10. vagrant的学习 之 Yii2

    vagrant的学习 之 Yii2 本文根据慕课网的视频教程练习,感谢慕课网! 慕课视频学习地址:https://www.imooc.com/video/14218. 慕课的参考文档地址:https: ...