文档章节

JDBC编程代码示例

秋风醉了
 秋风醉了
发布于 2014/11/07 20:21
字数 1098
阅读 31
收藏 0
点赞 0
评论 0

JDBC编程代码示例


看到一段代码,挺规整,就拿过来备用

package com.lyx.other;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest {

	// 创建静态全局变量
	static Connection conn;

	static Statement st;

	public static void main(String[] args) {
		insert(); // 插入添加记录
		update(); // 更新记录数据
		query(); // 查询记录并显示
		delete(); // 删除记录
	}

	/* 插入数据记录,并输出插入的数据记录数 */
	public static void insert() {
		conn = getConnection(); // 首先要获取连接,即连接到数据库
		try {
			conn.setAutoCommit(false); // 设置事物不自动提交
			String sql = "INSERT INTO people(first_name,last_name)"
					+ " VALUES ('adsasd','weeewewe')"; // 插入数据的sql语句
			st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象
			int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数
			System.out.println("向people表中插入 " + count + " 条数据"); // 输出插入操作的处理结果
			conn.commit(); // 提交事物
		} catch (SQLException e) {
			System.out.println("插入数据失败" + e.getMessage());
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // 关闭数据库连接
		}
	}

	/* 更新符合要求的记录,并返回更新的记录数目 */
	public static void update() {
		conn = getConnection(); // 同样先要获取连接,即连接到数据库
		try {
			String sql = "update people set first_name='sdadfaf' where person_id = 1";// 更新数据的sql语句
			st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象,st属局部变量
			int count = st.executeUpdate(sql);// 执行更新操作的sql语句,返回更新数据的个数
			System.out.println("people表中更新 " + count + " 条数据"); // 输出更新操作的处理结果
		} catch (SQLException e) {
			System.out.println("更新数据失败");
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // 关闭数据库连接
		}
	}

	/* 查询数据库,输出符合要求的记录的情况 */
	public static void query() {
		conn = getConnection(); // 同样先要获取连接,即连接到数据库
		try {
			String sql = "select * from people"; // 查询数据的sql语句
			st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象,st属局部变量
			ResultSet rs = st.executeQuery(sql); // 执行sql查询语句,返回查询数据的结果集
			System.out.println("最后的查询结果为:");
			while (rs.next()) { // 判断是否还有下一个数据
				// 根据字段名获取相应的值
				String first_name = rs.getString("first_name");
				String last_name = rs.getString("last_name");

				// 输出查到的记录的各个字段的值
				System.out.println("first_name=" + first_name + " "
						+ "last_name=" + last_name);

			}
		} catch (SQLException e) {
			System.out.println("查询数据失败");
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // 关闭数据库连接
		}
	}

	/* 删除符合要求的记录,输出情况 */
	public static void delete() {
		conn = getConnection(); // 同样先要获取连接,即连接到数据库
		try {
			String sql = "delete from people where person_id = 1";// 删除数据的sql语句
			st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象,st属局部变量
			int count = st.executeUpdate(sql);// 执行sql删除语句,返回删除数据的数量
			System.out.println("people表中删除 " + count + " 条数据\n"); // 输出删除操作的处理结果
		} catch (SQLException e) {
			System.out.println("删除数据失败");
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // 关闭数据库连接
		}
	}

	/* 获取数据库连接的函数 */
	public static Connection getConnection() {
		Connection con = null; // 创建用于连接数据库的Connection对象
		try {
			Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/local_database", "root",
					"034039");// 创建数据连接
		} catch (Exception e) {
			System.out.println("数据库连接失败" + e.getMessage());
		}
		return con; // 返回所建立的数据库连接
	}

}

下面代码是我根据这个改的,用到了jdbc的batch操作。。

package com.lyx.other;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCTest3 {
	public static void main(String[] args) {
		// 创建10个线程执行插入操作
		for (int i = 0; i < 100; i++) {
			final int n = i;
			Runnable task = new Runnable() {
				public void run() {
					Thread.currentThread().setName("thread_" + n);
					insertByBatch(Thread.currentThread().getName());
				}
			};
			Thread thread = new Thread(task);
			thread.start();
		}
	}

	public static void insertByBatch(String name) {
		long startTime = System.currentTimeMillis(); // 获取开始时间
		Connection conn = null;
		PreparedStatement ps = null;
		String sql = "insert into people_thread (first_name ,last_name ,"
				+ "thread_name) values (?,?,?)";
		try {
			conn = getConnection();
			conn.setAutoCommit(false);
			ps = conn.prepareStatement(sql);
			for (int i = 0; i < 1000; i++) {
				ps.setString(1, Integer.toString(i));
				ps.setString(2, Integer.toString(i));
				ps.setString(3, name);
				ps.addBatch();
				// 一批提交一次
				if (i % 10 == 0) {
					ps.executeBatch();
					ps.clearBatch();
				}
			}
			ps.executeBatch();
			conn.commit();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		long endTime = System.currentTimeMillis(); // 获取结束时间
		System.out.println("程序运行时间: " + (endTime - startTime) + "ms");
	}

	/* 获取数据库连接的函数 */
	public static Connection getConnection() {
		Connection con = null; // 创建用于连接数据库的Connection对象
		try {
			Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/local_database", "root",
					"034039");// 创建数据连接
		} catch (Exception e) {
			System.out.println("数据库连接失败" + e.getMessage());
		}
		return con; // 返回所建立的数据库连接
	}

}

==========END==========


© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 229
博文 577
码字总数 407134
作品 0
朝阳
程序员
用 JNI 进行 Java 编程(1)

本教程是关于什么的? Java 本机接口(Java Native Interface (JNI))是一个本机编程接口,它是 Java 软件开发工具箱(Java Software Development Kit (SDK))的一部分。JNI 允许 Java 代码使...

Jerikc
2012/10/08
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0
用 JNI 进行 Java 编程(3)

从 C/C++ 程序调用 Java 代码 概述 JNI 允许您从本机代码内调用 Java 类方法。要做到这一点,通常必须使用 Invocation API 在本机代码内创建和初始化一个 JVM。下列是您可能决定从 C/C++ 代码...

Jerikc
2012/10/08
0
0
JVM 即时编译器 - GraalVM

Graal — 新的 JVM 即时编译器 GraalVM 是新一代的高性能跨语言虚拟机,用于运行 JavaScript、Python 3、Ruby、R、基于 JVM 的语言,如 Java、Scala、Kotlin 和基于 LLVM 的语言,如 C 和 C+...

匿名
2014/09/29
0
2
android 自定义控件 属性介绍

一、控件自定义属性介绍 以下示例中代码均在values/attrs.xml 中定义,属性均可随意命名。 1. reference:参考某一资源ID。 示例: [java] 代码如下: <declare-styleable name = "名称"> <a...

一寨之主
2014/02/10
0
0
native关键字初识--java调用非java代码的接口

Java基础知识——JNI入门介绍(上) Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成。如果您希望利用已有的代...

成长中的菜鸟
2015/02/10
0
0
Java NIO AsynchronousFileChannel

原文链接 , 原文作者:Jakob Jenkov, 翻译:Neil Hao 在Java 7,AsynchronousFileChannel 被添加到了Java NIO中。使用AsynchronousFileChannel可以实现异步地读取和写入文件数据。 创建一个A...

Neil_Hao
01/20
0
0
为什么我会弃Java,选择了Kotlin——专访《Java编程思想》作者 Bruce Eckel

点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! 这是前不久我们发布《Kotlin或将取代Java》一文之后,来自网友们的部分声音。 可以看到:作为编程语言界的老大——Java仍然...

csdnnews
05/30
0
0
Java 下一代: Groovy、Scala 和 Clojure

在与 Martin Fowler 共同参加的一次主题演讲中,他提供了一个敏锐的观察报告: Java 的遗产是 平台,不是 语言。 最初的 Java 技术工程师曾做过一个了不起的决定,将语言从运行时中分离出来,...

一只死笨死笨的猪
2014/10/23
0
0
java的System.getProperty()方法可以获取的值

java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 ja...

cRaZy_JaZa
2013/10/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql 主从复制中遇到的错误!

。。。。。

万建宁
9分钟前
0
0
DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
19分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
22分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
23分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
28分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
31分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
33分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
33分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
36分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
39分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部