建立数据库和数据表

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. 条款8:别让异常逃离析构函数(prevent exception from leaving destructors)

    NOTE: 1.析构函数绝对不要吐出异常.如果一个被析构函数调用的函数可能抛出异常,析构函数应该扑捉任何异常,然后吞下他们(不传播)或结束程序. 2.如果客户需要对某个操作函数运行期间抛出的异常做出反 ...

  2. Feedback on Ch5 paper based on CFD-RANS

    It is encouraging that you took the initiative to write this journal manuscript, but it needs a lot ...

  3. CentOS 中 YUM 安装桌面环境

    CentOS 作为服务器的操作系统是很常见的,但是因为需要稳定而没有很时髦的更新,所以很少做为桌面环境.在服务器上通常不需要安装桌面环境,最小化地安装 CentOS(也就是 minimal CentO ...

  4. Linux使用Mutt发送邮件/附件

    使用Mutt发邮件极其方便,只需要一条命令即可发送或者批量发送邮件 功能说明:E-mail管理程序. 语 法:mutt [-hnpRvxz][-a<文件>][-b<地址>][- ...

  5. iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)

    百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包

  6. POJ 1523 网络连通

    题目大意: 给你一个网络组,每台机子与其他机子的关系,让你找到所有的割点,如果没有割点,输出无 这道题目就是最直接的求割点问题,我在这里用的是邻接矩阵来存储机子之间的关系 割点问题的求解需要对深度优先 ...

  7. nginx学习网站收录

    1.菜鸟教程 2. Nginx中文 3. Nginx官网 参考:http://www.cnblogs.com/knowledgesea/p/5175711.html

  8. msp430项目编程20

    msp430中项目---超声波测距系统 1.定时器工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习

  9. ESI 动态缓存技术[转载]

    任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP ...

  10. Git学习之常见错误 git push 失败

    Git学习之常见错误 git push 失败 问题描述: git push Counting objects: , done. Delta compression using up to thread ...