`
simple1024
  • 浏览: 74344 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC连接

    博客分类:
  • Java
阅读更多

-------------------------------《JDBC》--------------------------------

JDBC Java数据库连接

JDBC是一个规范,遵循JDBC接口规范,各个数据库厂家各自实现自己的驱动程序

JDBC驱动程序都应实现的重要接口:

DriverManager 驱动管理

Connection 数据库连接

Statement 语句执行接口 Statement---sql语句.

CallableStatement---存储过程、函数.

ResultSet 结果集

ODBC 开放数据库连接

 

驱动包放入classpath环境变量中。

 

//Java连接Oracle

"jdbc:oracle:thin:@192.168.2.23:1521:simple","simple","simple"

//Java连接SQLServer

jdbc:microsofr:sqlserver://localhost:1433;DatabaseName=dbName

 

---------------------------------------Java连接Oracle------------------------------------------------------

1、加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

2、得到连接

Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@192.168.2.23:1521:simple","simple","simple");

3、创建CallableStatement

CallableStatement cs = ct.prepareCall("{call pro_input(?,?)}");

4、给?赋值

cs.setString(1,"simple");

cs.setInt(2, 20);

5、执行

cs.execute();

ct.commit();

6、关闭

//cs.close();

ct.close();

 

 

完整例子:

 

public class JDBCTest
{
	//1.加载驱动
	static boolean LoadDriver()
	{
		String driverClass="oracle.jdbc.driver.OracleDriver";
		try
		{
			//根据类名 搜索驱动程序
			Class.forName(driverClass);
			return true;
		}
		catch(ClassNotFoundException e)
		{
			System.out.println(e);
		}
		return false;
	}

	//2.数据库连接
	static Connection OpenDataBase(String user,String pwd)
	{
		//定义链接字符串
		String url="jdbc:oracle:thin:@192.168.2.23:1521:simple";
		try
		{
			return DriverManager.getConnection(url,user,pwd);
		}
		catch(SQLException e)
		{
			System.out.println("建立数据库连接失败,"+e);
		}
		return null;
	}
	
	//3.执行语句
	static void testSql(Connection con,String sql)
	{
		try
		{
			Statement stmt = con.createStatement();
			int rows = stmt.executeUpdate(sql);
			System.out.println("执行语句,返回:"+rows);
		} catch (SQLException e)
		{
			System.out.println("执行语句失败,"+e);
		}
	}
	
	//数据库事物控制
	//开始事务
	static void BeginTranaction(Connection con)
	{
		try
		{
			con.setAutoCommit(false);//设置jdbc事务为手动模式
		}
		catch(SQLException e)
		{
			System.out.println("事务初始化失败,"+e);
		}
	}
	//提交
	static void Commit(Connection con)
	{
		try
		{
			con.commit();
		}
		catch(SQLException e)
		{
			System.out.println("事务提交失败,"+e);
		}
		try
		{
			con.setAutoCommit(true);//还原为自动单条事务模式
		}
		catch(SQLException e){}
	}
	//回滚
	static void Rollback(Connection con)
	{
		try
		{
			con.rollback();
		}
		catch(SQLException e)
		{
			System.out.println("事务回滚失败,"+e);
		}
		try
		{
			con.setAutoCommit(true);//还原为自动单条事务模式
		}
		catch(SQLException e){}
	}
	
	//查询
	static ResultSet testQuerry(Connection con,String sql)
	{
		try
		{
			Statement stmt = con.createStatement();
			return stmt.executeQuery(sql);
		}
		catch(SQLException e)
		{
			System.out.println("执行查询发生异常:"+e);
		}
		return null;
	}
	
	//执行预处理的语句对象
	static PreparedStatement getPrapareStmt(Connection con,String sql)
	{
		try
		{
			return con.prepareStatement(sql);
		} catch (SQLException e)
		{
			System.out.println("创建预处理对象发生异常,"+e);
		}
		return null;
	}
	
	//调用存储过程
	static int WriteSyslos(Connection con,int tid,String content)
	{
		try
		{
			String sql = "{call prc_writelog(?,?,?,?)}";
			//String sql = "{?=call prc_writelog(?,?,?,?)}";	//调用函数
			CallableStatement stmt = con.prepareCall(sql);
			//参数赋值
			stmt.setInt(1, tid);
			stmt.setString(2, content);
			//注册出参类型
			stmt.registerOutParameter(3, Types.INTEGER);
			stmt.registerOutParameter(4, Types.VARCHAR);
			//执行
			stmt.execute();
			//取出出参的数据
			int iRet = stmt.getInt(3);
			String sRet = stmt.getString(4);
			System.out.printf("iRet:%d,sRet:%s \r\n",iRet,sRet);
			return iRet;
		}
		catch (SQLException e)
		{
			System.out.println("调用存储过程失败,"+e);
		}
		return 0;
	}
	
	public static void main(String[] args)
	{
		if(LoadDriver())
		{
			Connection dbCon = OpenDataBase("simple","simple");
			if(dbCon!=null)
			{
				System.out.println("连接成功!");
			}
			//写日志
			WriteSyslos(dbCon, 10, "记录java日志,通过存储过程!");
			//开始事务
			BeginTranaction(dbCon);
			//insert
			for(int i = 0;i<3;i++)
			{
				testSql(dbCon, "insert into syslogs values(seq_syslogs.nextval,10,sysdate,'java客户端程序日志',user)");
			}
			//结束事务
			Commit(dbCon);
			//Rollback(dbCon);
			
			//执行批量任务
			try
			{
				PreparedStatement pstmt = getPrapareStmt(dbCon, "insert into syslogs values(seq_syslogs.nextval,?,sysdate,?,user)");
				BeginTranaction(dbCon);//手动事务
				for(int i=0;i<300;i++)
				{
					pstmt.setInt(1, 10);
					pstmt.setString(2, "No."+i+"批量插入任务");
					
					pstmt.addBatch();//添加到批处理任务中
				}
				int[] rows = pstmt.executeBatch();
				System.out.print("批处理任务返回:("+pstmt.SUCCESS_NO_INFO+"表示执行成功, "+pstmt.EXECUTE_FAILED+"表示执行失败!)[");
				for(int val:rows)
				{
					System.out.print(val+",");
				}
				System.out.println("]");
				Commit(dbCon);
				pstmt.close();
			} catch (SQLException e1)
			{
				e1.printStackTrace();
			}
			//update
			//testSql(dbCon, "update syslogs set content='java客户端更新日志' where logid=90");
			//testSql(dbCon, "delete from syslogs where logid=90");
			
			//查询
			try
			{
				ResultSet rs = testQuerry(dbCon, "select log.logid,type.title,log.dtm,log.content from syslogs log,logtypes type where log.tid=type.tid order by log.dtm desc ");
				if(rs!=null)
				{
					while(rs.next())//移到下一条记录
					{
						//int logid_1 = rs.getInt(1);
						int logid_2 = rs.getInt("logid");
						System.out.printf("日志ID :%d \r\n",logid_2);
						String title = rs.getString("title");
						Date dtm = rs.getDate("dtm");
						java.util.Date dtm_2 = new java.util.Date(dtm.getTime());
						System.out.printf("类型:%s  记录时间:%s  内容:%s \r\n",title,dtm_2.toLocaleString(),rs.getString("content"));
					}
				}
				rs.close();//释放结果集
			} catch (SQLException e){}
			
			//关闭连接
			try
			{
				if(dbCon!=null)
					dbCon.close();
			}
			catch(SQLException e){}
		}
	}
}
 
1
0
分享到:
评论
1 楼 huangsky 2011-03-30  
数据操作之前有没必要判断下连接是否为空,空的话重连一下

相关推荐

    Tongweb5中配置JDBC连接池

    Tongweb5是一款基于Java的Web应用服务器,它支持配置JDBC连接池来管理数据库连接。本文将详细介绍如何在Tongweb5中配置JDBC连接池,以及Web应用如何通过JNDI(Java Naming and Directory Interface)查找并使用这些...

    jdbc连接池配置(优化连接速度)

    在IT行业中,数据库连接管理是应用系统性能优化的关键环节之一,而JDBC连接池就是解决这一问题的有效工具。本文将详细讲解JDBC连接池的工作原理、配置方法以及如何通过优化来提升连接速度。 JDBC(Java Database ...

    Oracle 客户端JDBC连接测试工具

    Oracle客户端JDBC连接测试工具是一种实用程序,它允许开发者和系统管理员通过Java Database Connectivity (JDBC)接口测试与Oracle数据库的连接。这个工具通常包含在Oracle客户端安装中,或者可以作为一个独立的JAR...

    Jdbc连接oracle远程数据库中文乱码解决

    综上所述,解决JDBC连接Oracle远程数据库时的中文乱码问题,需要从多个层面进行检查和配置,包括应用程序的配置文件、JDBC连接参数、数据库服务器设置以及开发环境等。通过细心排查和合理配置,可以有效地避免这类...

    jdbc 连接impala或者jdbc连接hive

    下面将详细介绍如何使用JDBC连接Hive和Impala。 1. **JDBC连接Hive** Hive提供了一个名为Hive JDBC的驱动,它允许外部应用程序通过JDBC协议与Hive服务通信。要建立JDBC连接到Hive,你需要以下步骤: - **获取...

    JDBC连接数据库各种数据库参数大全

    ### JDBC连接数据库各种数据库参数详解 #### 一、Oracle8/8i/9i数据库(thin模式) 在Java中通过JDBC访问Oracle数据库时,通常采用thin驱动方式。thin驱动是一种纯Java驱动,无需依赖任何非Java代码即可完成与...

    Jdbc连接postgresql数据库(源码+jar包)

    总结来说,"Jdbc连接postgresql数据库(源码+jar包)"资源提供了使用Java JDBC连接到PostgreSQL数据库的实例,涵盖了从加载驱动到执行SQL的基本流程,对于学习和实践非常有帮助。通过学习和理解这些代码,开发者能够...

    jdbc连接不同数据库方法

    标题中的“jdbc连接不同数据库方法”指的是使用Java Database Connectivity (JDBC) API来与不同的数据库进行交互的方法。JDBC是Java平台中用于访问数据库的标准Java API,它允许开发者执行SQL语句并处理结果。 在...

    PB 通过JDBC连接SQLite

    标题 "PB 通过JDBC连接SQLite" 描述了一个使用PowerBuilder (PB) 通过Java Database Connectivity (JDBC) 驱动程序与SQLite数据库进行交互的场景。在本例中,使用的特定JDBC驱动是`sqlite-jdbc-3.23.1.jar`。这个...

    Java使用Jdbc连接Oracle执行简单查询操作示例

    Java使用Jdbc连接Oracle执行简单查询操作示例 Java使用Jdbc连接Oracle执行简单查询操作,是指使用Java语言通过Jdbc(Java Database Connectivity)连接Oracle数据库并执行简单查询操作的过程。本文将通过实例形式...

    JDBC连接Mysql数据库案例

    本案例将探讨如何使用JDBC连接MySQL数据库,并通过实际的代码示例讲解整个过程。我们将涉及以下知识点: 1. **JDBC驱动注册**: 在Java中,连接MySQL数据库首先需要加载并注册JDBC驱动。MySQL的JDBC驱动类是`...

    jdbc连接access数据库的驱动jar包

    本资源提供的“jdbc连接access数据库的驱动jar包”正是为了这个目的。 标题中的“jdbc连接access数据库的驱动jar包”指的是用于Java应用程序通过JDBC接口连接到Access数据库所需的特定驱动程序库,通常是一个Java ...

    jdbc连接字符串示例

    JDBC 连接字符串示例 本文将详细介绍 JDBC 连接字符串的示例,包括 Oracle、MySQL、SQL Server 等多种数据库的连接字符串。 JDBC 连接字符串简介 JDBC(Java Database Connectivity,Java 数据库连接)是一种 ...

    JDBC连接Oracle测试

    JDBC连接Oracle测试 package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DB { private static Connection conn; private static ...

    MySQL jdbc连接器 jdbc.zip

    MySQL JDBC 连接器,全称...总之,MySQL JDBC连接器是Java开发者不可或缺的工具,它使得我们可以方便地在Java应用中集成MySQL数据库,实现各种复杂的数据库操作,同时也需要我们关注其版本特性、性能优化以及安全实践。

    jdbc连接cache的demo及jar包,自己备份.rar

    标题"jdbc连接cache的demo及jar包,自己备份.rar"指出这是一个关于使用JDBC(Java Database Connectivity)连接Cache数据库的示例项目,其中包含了必要的jar包,并且用户已经将其作为个人备份保存。这里的“Cache”...

    JDBC连接实现简单学生管理系统(附数据库).zip

    **JDBC连接实现简单学生管理系统** 在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一种标准接口。本项目“JDBC连接实现简单学生管理系统”旨在通过JDBC技术,创建一个能够连接...

    JDBC连接数据库工具类

    JDBC连接数据库工具类 JDBC 连接数据库 ORACLE SQLSERVER MYSQL ORACLE 已测 OK 欢迎大家反馈 我的微博是: http://weibo.com/namenode

    java通过jdbc连接impala所需jar

    Java通过JDBC连接Impala是将Java应用程序与大数据分析平台Impala进行交互的一种常见方法。在Java编程中,JDBC(Java Database Connectivity)是用于访问数据库的标准API,它允许Java程序与各种数据库进行通信,包括...

Global site tag (gtag.js) - Google Analytics