JDBC数据库的API对照实例学习

标签: jdbc 数据库 api | 发表时间:2013-10-04 05:53 | 作者:wangyang1354
出处:http://blog.csdn.net
/*
功能:
      实现数据库对数据的批处理,比如下面要输入一千条数据,不能每次都要创建连接等操作之后插入一条再断开再建立插入、、、、这样的话很显然是十分的浪费时间的。
      当然了,批处理并不一定能到达很高的效率但是这是一种解决问题的方式。

时间:20131003
作者:烟大阳仔
*/
public class PiChuLi {

	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		create();
	}
	static void create() throws SQLException
	{
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			
			//3.创建语句
			String sql="insert into user(name,birthday,money) values(?,?,?)";
			ps=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			for(int i=0;i<1000;i++)
			{
				ps.setString(1, "sdmf"+i);
				ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
				ps.setFloat(3, 345+i);
				ps.addBatch();
			}
			ps.executeBatch();
			
		} finally
		{
			JdbcUtils.free(resultset, ps, conn);
		}
	}
}
----------------------------------------------------------------------------------------------------------
/*
功能:
      拿到刚插入的信息的主键,这是API中的一个用于学习该方法

时间:20131003
作者:烟大阳仔
*/
public class OtherApi {

	public static void main(String[] args) throws SQLException {
		int id=create();
		System.out.println(id);
	}
	//拿到刚插入的信息的主键
	static int create() throws SQLException
	{
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			
			//3.创建语句
			String sql="insert into user(name,birthday,money) values('wy','2011-09-23','2894656')";
			ps=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			ps.executeUpdate();
			resultset=ps.getGeneratedKeys();
			int id=0;
			if(resultset.next())
			{
				id=resultset.getInt(1);
			}
			return id;
		} finally
		{
			JdbcUtils.free(resultset, ps, conn);
		}
	}

}
-------------------------------------------------------------------------------------------------------------
/*
功能:
      可滚动的结果集实例
      分页查询
时间:20131003
作者:烟大阳仔
*/

public class ScrollAPIDemo {

	public static void main(String[] args) throws SQLException {
		scroll();
	}
	//可滚动的结果集实例
	//分页查询
	static void scroll() throws SQLException
	{
		Connection conn=null;
		Statement st=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			//3.创建语句
			st=conn.createStatement();
			//4.执行语句
			String sql="select id,name,birthday,money from user";
			resultset=st.executeQuery(sql);
			resultset.absolute(8);
			System.out.println();
			if(resultset.previous())
			{
				System.out.println(
				resultset.getObject("id")+"\t"+
				resultset.getObject("name")+"\t"+
				resultset.getObject("birthday")+"\t"+
				resultset.getObject("money")+"\t"
				
				);
			}
			//分页的一种方式不过效率比较低MySQL本身支持分页
			//对MySQL来说设置分页的话直接在sql语句中写为:
			//select id,name,birthday,money from user limit 100,10
			//也就是定位到第一百条数据显示十条数据
			resultset.absolute(100);
			int i=0;
			while(resultset.next()&&i<10)
			{
				i++;
				System.out.println(
						resultset.getObject("id")+"\t"+
						resultset.getObject("name")+"\t"+
						resultset.getObject("birthday")+"\t"+
						resultset.getObject("money")+"\t"
						);
			}
		} finally
		{
			JdbcUtils.free(resultset, st, conn);
		}
	}
}
-------------------------------------------------------------------------------------------------------------
/*
功能:
      可更新的结果集
时间:20131003
作者:烟大阳仔
*/

public class UpdateKeGengXin {

	/**
	 * @param args
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		read();
	}
	//可更新的结果集,查询出来之后进行更新,不过这个了解就可以了
	static void read() throws SQLException
	{
		Connection conn=null;
		Statement st=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			
			//3.创建语句
			st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			//4.执行语句
			resultset=st.executeQuery("select id,name,birthday,money from user where id<10");
			//5.处理结果
			while(resultset.next())
			{
				System.out.println(resultset.getObject("id"));
				System.out.println(resultset.getObject("name"));
				System.out.println(resultset.getObject("birthday"));
				System.out.println(resultset.getObject("money"));
				String name=resultset.getString("name");
				if("wangwu".equals(name))
				{
					resultset.updateFloat("money", 123);
					resultset.updateRow();
				}
			}
			
		} finally
		{
			JdbcUtils.free(resultset, st, conn);
		}
	}
}
-----------------------------------------------------------------------------------------------------------
/*
功能:
      数据库的元数据信息
时间:20131003
作者:烟大阳仔
*/

public class DBMD {
	//数据库的原信息
	public static void main(String[] args) throws SQLException {
		Connection conn=JdbcUtils.getConnection();
		DatabaseMetaData dbmd=conn.getMetaData();
		System.out.println(dbmd.getDatabaseMajorVersion());
		//数据库的名称
		System.out.println(dbmd.getDatabaseProductName());
		//数据库的版本号
		System.out.println(dbmd.getDatabaseProductVersion());
		//是不是支持事务型
		System.out.println(dbmd.supportsTransactions());
		
	}

}

作者:wangyang1354 发表于2013-10-3 21:53:11 原文链接
阅读:107 评论:0 查看评论

相关 [jdbc 数据库 api] 推荐:

JDBC数据库的API对照实例学习

- - CSDN博客数据库推荐文章
实现数据库对数据的批处理,比如下面要输入一千条数据,不能每次都要创建连接等操作之后插入一条再断开再建立插入、、、、这样的话很显然是十分的浪费时间的. 当然了,批处理并不一定能到达很高的效率但是这是一种解决问题的方式. 时间:20131003 作者:烟大阳仔 */ public class PiChuLi {.

jdbc测试mysql数据库sql预解析(绑定变量)

- - CSDN博客推荐文章
jdbc测试mysql数据库sql预解析(绑定变量).         用习惯了oracle,学习mysql,想测试一下mysql绑定变量的效果. 以前看网上介绍大部份都说mysql没有sql共享池的概念,所以也不存在sql预解析或绑定变量的说法.         今天测试了一下(通过网络抓包和看服务器端sql日志的方法),发现mysql还是有sql预解析的实现.

JDBC操纵Oracle数据库中的BLOB字段

- - Oracle - 数据库 - ITeye博客
                                                                        BLOB字段的写入. 方法一:(JDBC2.0 规范). 2.插入一个空的blob. 3.使用行级锁定blob字段.                                                                        BLOB字段的读取.

Python连接数据库之DB-API

- - 标点符
在Python中如果要连接数据库,不管是 MySQL、 SQL Server、 PostgreSQL亦或是SQLite,使用时都是采用游标的方式,所以就不得不学习Python DB-API. Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范. DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问接口.

HA-JDBC -

- -
The state manager component is responsible for storing the active status of each database in the cluster, as well as any durability state.

java调用kettle api 操作日志写入到数据库表

- - 开源软件 - ITeye博客
//将step日志数据库配置名加入到变量集中. //StepLogTable使用的数据库连接名(上面配置的变量名). //设置Step日志的表名. //设置TransMeta的StepLogTable. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

JDBC性能小贴

- - 开源软件 - ITeye博客
本文收集了一些用于提升JDBC性能的方法. Java应用或者JavaEE Web应用的性能是很重要的,尤其是数据库后端对应用的性能影响. 不知你是否经历过Java、JavaEE web应用非常慢的案例没有(处理一个简单的请求都要花上好几秒的时间用于数据库访问,分页、排序等). 下面这些贴士也许能提升Java应用的性能.

oracle的jdbc驱动

- - Oracle - 数据库 - ITeye博客
oracle的jdbc驱动主要有下面三类:.   1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动. 因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置.

Api Blocking

- - xiaobaoqiu Blog
4.RateLimiter实现限流. 接口限流是保证系统稳定性的三大法宝之一(缓存, 限流, 降级).. 本文使用三种方式实现Api限流, 并提供了一个用Spring实现的Api限流的简单Demo, Demo的git地址: https://github.com/xiaobaoqiu/api-blocking.

jdbc日志,Log4jbdc-remix使用

- - 企业架构 - ITeye博客
   做项目的时候给jdbc做日志,只打印出代. 由是看看有没有给jdbc做日志的框架. 找到了log4jdbc,但是觉得还不是很理想,由是又看了看,还有一个护展插件log4jdbc-remix. 先不扯这么多,先来教大家怎么使用吧. 使用这个插件依赖4个类:log4j,slf4j-log4j,slf4j-api,log4j-remix.