文档章节

JDBC编程代码示例

秋风醉了
 秋风醉了
发布于 2014/11/07 20:21
字数 1098
阅读 46
收藏 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==========


© 著作权归作者所有

秋风醉了
粉丝 253
博文 532
码字总数 405755
作品 0
朝阳
程序员
私信 提问
用 JNI 进行 Java 编程(1)

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

Jerikc
2012/10/08
345
0
Java 书籍 Top 10

陈皓 http:// blog.csdn.net/haoel 下面是Java Inside上推荐的十本Java书籍(文章来源),我把中文版的也列了出来。 1)Java Language Specification, Third Edition (by James Gosling) 本书...

JavaGG
2009/09/21
1.3W
20
Java程序员必读书单,家族又添新成员

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

异步社区
2018/05/09
0
0
java 7 入门书籍

一、Java从入门到精通 《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。 《Java从入门到精通(第3版...

modernizr
2014/05/15
7.8K
9
可爱的 Jython

最初 Jython 称为 JPython,是一个十足的 Java 应用程序,它允许开发人员使用 Python 编程语言的语法和大多数特性。Java 程序员对 Jython 感兴趣的原因有几个: Python 解释器 shell 的 Jyth...

红薯
2008/12/01
4.4K
7

没有更多内容

加载失败,请刷新页面

加载更多

npm 发布webpack插件 webpack-html-cdn-plugin

初始化一个项目 npm init 切换到npm源 淘宝 npm config set registry https://registry.npm.taobao.org npm npm config set registry http://registry.npmjs.org 登录 npm login 登录状态......

阿豪boy
34分钟前
55
0
java基础(16)递归

一.说明 递归:方法内调用自己 public static void run1(){ //递归 run1(); } 二.入门: 三.执行流程: 四.无限循环:经常用 无限递归不要轻易使用,无限递归的终点是:栈内存溢出错误 五.递...

煌sir
39分钟前
35
0
REST接口设计规范总结

URI格式规范 URI中尽量使用连字符”-“代替下划线”_”的使用 URI中统一使用小写字母 URI中不要包含文件(脚本)的扩展名 URI命名规范 文档(Document)类型的资源用名词(短语)单数命名 集合(Co...

Treize
今天
57
0
CentOS-配置YUM源加速(阿里云、Nexus3)

备份本地源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 配置CentOS6 $ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/......

-自由人生-
今天
80
0
我如何获取一周中开始的DateTime?

我如何只知道C#中的当前时间来查找一周的开始(星期日和星期一)? 就像是: DateTime.Now.StartWeek(Monday); #1楼 丑陋,但至少可以给您正确的日期 通过系统设置星期开始时间: publ...

javail
今天
55
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部