使用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 ...
随机推荐
- post processing in CFD
post post Table of Contents 1. Post-processing 1.1. Reverse flow 1.1.1. reasons 1.1.2. solutions 1.2 ...
- 在VS中如何更换项目名称
我们常常在建立项目的时候就必须输入一个项目名称,有的时候我们就随意的起了一个名称,可是到后面想到了一个更好的项目名我们就想把项目名称改过来,但VS并不那么智能,我们不能简单的将项目对应的解决方案SLN ...
- selenium之文件上传
文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer. 首先,我们要区分出上传按钮的种类,大体上 ...
- python mock模块使用(二)
本篇继续介绍mock里面另一种实现方式,patch装饰器的使用,patch() 作为函数装饰器,为您创建模拟并将其传递到装饰函数 官方文档地址 patch简介 1.unittest.mock.patc ...
- 【Ajax 1】Ajax与传统Web开发的区别
导读:从用户体验度的角度来说,利用Ajax进行开发的网站,其体验度高于利用传统Web开发技术,那么,是什么因素导致了这一现象呢?难道说Ajax开发,就一定优于传统Web技术吗?本篇文章,将主要介绍Aj ...
- HDU2069-Coin Change
Coin Change 这题题意和UVA674很像,但加了一个限制条件不能超过100个硬币.于是我们可以用d[i][j]来表示硬币数量为i时金钱总数为j时的方法总数,总钱不能超过250. const ...
- mysql5.7.20主从和主主搭建
环境描述mysql主从和主主同步 注意事项:1)同步服务器网络联通,ping通,对方授权信息连接到对方数据库(防火墙开发3306)2)关闭SELinux3)同步前,双方数据库需要同步数据保持一致. 主 ...
- [Vijos] 河蟹王国
描述 河蟹王国有一位河蟹国王,他的名字叫羊驼.河蟹王国富饶安定,人们和谐相处.有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人.于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀).每个人 ...
- msp430项目编程12
msp430中项目---温度检测系统 1.ds18b20工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习
- poj3532求生成树中最大权与最小权只差最小的生成树+hoj1598俩个点之间的最大权与最小权只差最小的路经。
该题是最小生成树问题变通活用,表示自己开始没有想到该算法:先将所有边按权重排序,然后枚举最小边,求最小生成树(一个简单图的最小生成树的最大权是所有生成树中最大权最小的,这个容易理解,所以每次取最小边, ...