- 浏览: 178109 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (104)
- JavaScript备忘 (11)
- Java编程 (23)
- struts框架 (3)
- hibernate框架 (0)
- ibatis框架 (2)
- C++编程 (2)
- 数据库 (8)
- 操作系统 (2)
- Extjs (0)
- 基于web的工作流引擎设计 (0)
- 开发异常备忘 (5)
- 项目管理工具 (6)
- Spring框架 (3)
- HTML (1)
- 项目架构 (1)
- 备忘 (20)
- 设计模式 (9)
- Disruptor (0)
- CQRS (0)
- DDD (0)
- Axon (0)
- JavaScript (1)
- 微信 (0)
- 新浪微博 (1)
- 软件备份 (2)
- AngularJS (1)
- 安全性 (1)
- Linux (2)
- 工具 (4)
- OSGI (1)
- idea (2)
- Docker (1)
- 测试相关 (0)
- WebService (1)
- 数据安全 (0)
- 移动开发 (0)
- springboot (1)
最新评论
-
larryscale:
zz_wangyuhoho 写道你这个工程跑不起来呀我测试过的 ...
Springmvc3+Spring3+MyBatis3 -
zz_wangyuhoho:
你这个工程跑不起来呀
Springmvc3+Spring3+MyBatis3 -
aeolusj:
var myAlert=alert;改为var myAlert ...
js 拦截alert对话框 -
skcks:
建行内部开发平台也是做了一个类似的封装用于ajax远程调用服务 ...
通用Ajax设计 -
qiuyu1990:
这个应该是 DWR的原理吧
通用Ajax设计
1.使用JDBC来完成同类多数据的连接,或不同类数据库之间的连接,通用XML文件配置来完成。
1.1 datebase_cfg.xml [数据库连接配置]
<?xml version="1.0" encoding="UTF-8"?> <database> <sqlserver> <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver><!-- 数据库驱动 --> <userName>sa</userName> <!-- 用户名 --> <userPass>123</userPass> <!-- 密码 --> <state>1</state> <!-- 开启1,关闭0 --><!-- 状态,是否开启 --> <dataBaseName>framemanager</dataBaseName> <!-- 默认数据库名 --> <baseURL>localhost</baseURL> <!-- 服务器地址 --> </sqlserver> <mysql> <driver>com.mysql.jdbc.Driver</driver> <userName>root</userName> <userPass>111111</userPass> <state>0</state> <!-- 开启2,关闭0 --> <dataBaseName>bsdev</dataBaseName> <baseURL>localhost</baseURL> </mysql> <oracle> <driver>oracle.jdbc.driver.OracleDriver</driver> <userName>root</userName> <userPass>root</userPass> <state>0</state> <!-- 开启3,关闭0 --> <dataBaseName>test</dataBaseName> <baseURL>localhost</baseURL> </oracle> </database>
1.2 GetConfig.java [数据库连接]
package com.smartcom.ma.util.DbUtils; import java.net.URL; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /************************************************* * 采用单例模式读取xml配置文件sys-config.xml * @author Liyongbin * *************************************************/ public class GetConfig { //静态的私有成员变量 private static GetConfig instance = new GetConfig(); private String DRIVER; //数据库驱动 private String URL; //连接字符串 private String USERNAME; //用户名 private String PASSWORD ; //用户密码 private String STATUS; //状态 private String DatabaseName=""; //数据库名 public enum DBname{ //定义枚举类型 DOCMANAGER,FRAMEMANAGER,WWWMANAGER ; ////定义多个SqlServer数据库名字枚举 } private Connection conn = null; private PreparedStatement pst = null; private CallableStatement cs= null; private ResultSet res = null; private Statement st = null; private Document doc; //公共的静态入口方法 public static GetConfig getInstance() { return instance; } /********************************************** * 私有的构造方法[读取配置文件] * @author Liyongbin [Apr 28, 2012 6:53:24 PM] * @return ***********************************************/ private GetConfig() { try { //获取当前项目在本地的物理路径 // String url = ConfigReader.class.getClass().getResource("/").getPath(); URL url = GetConfig.class.getResource("datebase_cfg.xml"); SAXReader reader = new SAXReader(); doc = reader.read(url.getFile()); // System.out.println(doc.asXML()); Element root = doc.getRootElement();//xml文件的根目录 // Server STATUS = root.element("sqlserver").element("state").getText(); if(null!=STATUS && "1".equals(STATUS)){ DRIVER = root.element("sqlserver").element("driver").getText(); USERNAME = root.element("sqlserver").element("userName").getText(); PASSWORD = root.element("sqlserver").element("userPass").getText(); //DatabaseName = root.element("sqlserver").element("dataBaseName").getText();//在后面设置 URL = "jdbc:sqlserver://" + root.element("sqlserver").element("baseURL").getText() + ":1433;databasename=" + DatabaseName; }else if(null!=STATUS && "0".equals(STATUS)){ STATUS = root.element("mysql").element("state").getText(); } // MySql if(null!=STATUS && "2".equals(STATUS)){ DRIVER = root.element("mysql").element("driver").getText(); USERNAME = root.element("mysql").element("userName").getText(); PASSWORD = root.element("mysql").element("userPass").getText(); DatabaseName = root.element("mysql").element("dataBaseName").getText(); URL = "jdbc:mysql://" + root.element("mysql").element("baseURL").getText() + ":3306/" + DatabaseName; }else if(null!=STATUS && "0".equals(STATUS)){ STATUS = root.element("oracle").element("state").getText(); } // Oracle if(null!=STATUS && "3".equals(STATUS)){ STATUS = root.element("oracle").element("state").getText(); DRIVER = root.element("oracle").element("driver").getText(); USERNAME = root.element("oracle").element("userName").getText(); PASSWORD = root.element("oracle").element("userPass").getText(); DatabaseName = root.element("oracle").element("dataBaseName").getText(); URL = "jdbc:oracle:thin:@" + root.element("oracle").element("baseURL").getText() + ":1521:" + DatabaseName; } if(null==STATUS || "0".equals(STATUS)){ //读取配置文件出错[无可用的数据库配置] } System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>DRIVER:"+DRIVER); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>USERNAME:"+USERNAME); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>PASSWORD:"+PASSWORD); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>DatabaseName:"+DatabaseName); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>URL:"+URL); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } /********************************************** * 获取数据库的连接[默认] * * @return ***********************************************/ public Connection getConn(DBname dbType){ System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>dbType:"+dbType); try { Class.forName(DRIVER); if(URL.indexOf("jdbc:sqlserver")!=-1){//Sql Server URL = URL.substring(0,URL.lastIndexOf("=")+1); //去掉数据库名称,重新组装[仅适用于多个SqlServer数据库的情况] switch (dbType) { case FRAMEMANAGER: //框架 URL += "framemanager"; break; case WWWMANAGER: //网站 URL += "wwwmanager"; break; default: //知识管理[缺省] URL += "docmanager"; break; } }else if(URL.indexOf("jdbc:mysql")!=-1){//MySQL }else if(URL.indexOf("jdbc:oracle")!=-1){//Oracle } System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>URL:"+URL); conn = java.sql.DriverManager.getConnection(URL, USERNAME, PASSWORD); conn.setAutoCommit(false); //关闭自动提交功能,改为人工提交事务 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /********************************************* * 获取MA数据库的连接[框架数据库] * @author Liyongbin [Apr 28, 2012 7:11:12 PM] * @return 框架数据库连接 *********************************************/ public Connection getMAConn(){ try { conn = getConn(DBname.FRAMEMANAGER); } catch (Exception e) { e.printStackTrace(); } return conn; } /********************************************* * 获取KM数据库的连接[知识管理系统] * @author Liyongbin [Apr 28, 2012 7:11:13 PM] * @return 知识管理数据库连接 *********************************************/ public Connection getKMConn(){ try { conn = getConn(DBname.DOCMANAGER); } catch (Exception e) { e.printStackTrace(); } return conn; } /********************************************* * 获取网站数据库的连接 * @author Liyongbin [Apr 28, 2012 7:11:15 PM] * @return 网站数据库连接 ********************************************/ public Connection getWWWConn(){ try { conn = getConn(DBname.WWWMANAGER); } catch (Exception e) { e.printStackTrace(); } return conn; } /********************************************** * 关闭数据库参数 * @author Liyongbin [Apr 29, 2012 7:25:31 AM] * @return **********************************************/ public void close(){ try { if(res != null){ res.close(); } if(pst != null){ pst.close(); } if(st != null){ st.close(); } if(cs != null){ cs.close(); } if(conn != null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
1.3 DBOperation.java [CRUD]
package com.smartcom.ma.util.DbUtils; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class DBOperation { private static Connection conn = null; private static PreparedStatement pst = null; private static CallableStatement cs= null; private static ResultSet res = null; private static Statement st = null; /********************************************** * 执行sql语句的增删改 * @author Liyongbin [Apr 28, 2012 7:20:34 PM] * @return ***********************************************/ public static Integer executeSQL(String sql,String[] param) throws SQLException{ Integer result = 0; conn = null; pst = null; try { conn = GetConfig.getInstance().getConn(null); pst = conn.prepareStatement(sql); if(param != null){ for(int i = 0; i < param.length; i++){ pst.setString(i + 1, param[i]); } } result = pst.executeUpdate(); conn.commit();//提交事务 } catch (SQLException e) { conn.rollback();//回滚事务 e.printStackTrace(); }finally{ GetConfig.getInstance().close(); } return result; } /********************************************** * 普通sql查询 * @author Liyongbin [Apr 29, 2012 7:48:11 AM] * @param sql * @param param * @return ***********************************************/ public static Object[][] executeQuery(Connection conn,String sql,String[] param){ ResultSetMetaData metadata = null; //数据的结构数据 Object[][] rets =null; //输出结果 int columnCount=0; //行数 int rowCount = 0; //列数 try { //连接数据库 pst = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //设置参数 if(param != null){ for(int i = 0; i < param.length; i++){ pst.setString(i + 1, param[i]); } } //执行查询 res = pst.executeQuery(); //取数据结构数据 metadata = res.getMetaData(); //取行数 columnCount = metadata.getColumnCount(); res.last(); //取列数 rowCount = res.getRow(); res.first(); //创建结果数组 rets = new Object[rowCount][columnCount]; //遍历数据集 for(int i=0;i<rowCount;res.next()){ for(int j=0;j<columnCount;j++){ rets[i][j] = res.getObject(j+1); } i++; } } catch (SQLException e) { e.printStackTrace(); }finally{ if(null!=conn){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return rets; } /********************************************** * 普通sql查询 * @author Liyongbin * @param sql * @param param * @return ***********************************************/ public static Object[][] executeQuery(String sql,String[] param){ try { Connection conn = GetConfig.getInstance().getConn(null); return executeQuery(conn,sql,param); } catch (Exception e) { e.printStackTrace(); }finally{ if(null!=conn){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return null; } /********************************************* * 获取MA数据库的连接[框架数据库] * @author Liyongbin [Apr 28, 2012 7:11:12 PM] * @return 框架数据库连接 *********************************************/ public static Connection getMAConn(){ Connection conn =null; try { conn = GetConfig.getInstance().getMAConn(); } catch (Exception e) { e.printStackTrace(); } return conn; } /********************************************* * 获取KM数据库的连接[知识管理系统] * @author Liyongbin [Apr 28, 2012 7:11:13 PM] * @return 知识管理数据库连接 *********************************************/ public Connection getKMConn(){ Connection conn =null; try { conn = GetConfig.getInstance().getKMConn(); } catch (Exception e) { e.printStackTrace(); } return conn; } /********************************************* * 获取网站数据库的连接 * @author Liyongbin [Apr 28, 2012 7:11:15 PM] * @return 网站数据库连接 ********************************************/ public Connection getWWWConn(){ Connection conn =null; try { conn = GetConfig.getInstance().getWWWConn(); } catch (Exception e) { e.printStackTrace(); } return conn; } }
发表评论
-
MySql递归查询语句
2020-09-25 15:27 770MySql数据库,递归查询子节点 1.数据结构 表名: ... -
添加删除数据库远程链接
2016-03-03 18:06 553---添加数据库远程链接 exec sp_addlinked ... -
SQL Server中查询一个值出现的所有表
2015-08-04 17:25 740Create Procedure sp_Search(@Va ... -
对分组内的数据进行排序,并取其第一条
2014-11-19 15:27 0有多台设备,每台设备每天采集多条数据,现需要获取每台设备每 ... -
数据库中的递归查询
2013-09-15 07:31 1199最近工作中用到了递归查询,顺便做下备忘: 1. SQL20 ... -
MySql 常用命令
2012-11-27 17:16 840MySql中一些常用的命令 ... -
Sql Server 使用游标实现列转行
2012-10-19 23:48 995将表中的数据进行“列转行”,如下: 1.原表中的数据 se ... -
Oracle中的子程序和程序包
2010-08-12 20:48 1014--存储过程的语法 CREATE [OR REPLACE] P ...
相关推荐
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
本资源集合了常用的JDBC数据库连接jar包,以及一些知名的数据库连接池实现,如dbcp和c3p0,这对于开发人员来说是非常宝贵的资源。 首先,让我们了解一下JDBC。JDBC提供了一套标准的API,包括接口和类,使得开发者...
Java JDBC 数据库连接池总结 Java JDBC 数据库连接池是 Java 应用程序访问数据库的基本原理之一。Java 语言通过 JDBC 技术访问数据库,JDBC 是一种“开放”的方案,为数据库应用开发人员和数据库前台工具开发人员...
在这个类中,我们将实现获取数据库连接的方法。 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionTest { private static Connection...
System.out.println("数据库连接失败!"); se.printStackTrace(); } ``` 四、创建一个 Statement 要执行 SQL 语句,必须获得 java.sql.Statement 实例,Statement 实例分为以下 3 种类型: 1. 执行静态 SQL 语句...
### JDBC不同数据库连接详解 #### 一、引言 Java Database Connectivity (JDBC) 是 Java 平台上的标准 SQL 数据库访问技术。它提供了一种统一的方式来与各种关系型数据库进行交互,允许开发者通过标准的 API 来...
3. 创建数据库连接: 连接数据库需要向java.sql.DriverManager请求并获得一个Connection对象,该对象代表了一个数据库的连接。通过调用DriverManager的getConnection()方法并传入数据库路径、用户名和密码来获得这...
3. **数据库连接**:使用JDBC进行数据库连接时,首先需要加载数据库驱动,这可以通过`Class.forName()`方法实现。然后,使用`DriverManager.getConnection()`方法创建`Connection`对象,这是与数据库建立连接的关键...
在实际项目中,为了提高性能和资源利用率,通常会使用数据库连接池,如Apache的DBCP、C3P0,或者HikariCP。连接池预先创建一定数量的连接,当需要时直接分配,用完后归还,避免频繁创建和销毁连接。 ### 4. ...
例如,使用`Class.forName()`加载数据库驱动,通过`DriverManager.getConnection()`获取数据库连接,`Statement`或`PreparedStatement`对象来执行SQL,最后使用`Connection.close()`关闭连接。 其次,事务是数据库...
**JDBC连接实现简单学生管理系统** 在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一种标准接口。本项目“JDBC连接实现简单学生管理系统”旨在通过JDBC技术,创建一个能够连接...
在将数据库数据导出到 CSV 文件之前,首先需要获取数据库连接。这里使用了 reqBean.getDataSyncExecInfo().getConn() 方法来获取连接,这个方法返回一个 Connection 对象,该对象是 JDBC 中的核心对象,用于与数据库...
实现JDBC数据库连接池的基本步骤如下: 1. **选择连接池实现**:首先,我们需要选择一个合适的数据库连接池实现,如Apache的DBCP、C3P0、HikariCP或Tomcat JDBC连接池等。这些连接池库提供了管理和维护数据库连接的...
**jdbc通用数据库连接** 在Java编程中,JDBC(Java Database Connectivity)是Java语言与各种数据库进行交互的一套标准API。它允许Java程序通过编写SQL语句来操作数据库,实现数据的存储、检索和更新等功能。JDBC为...
以下是对给定文件中提到的JDBC数据库连接模板代码的知识点详细解析。 ### JDBC概念 JDBC是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成。通过JDBC,开发者可以将SQL语句发送到几乎任何...
JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种API。它提供了一种标准的方式来访问和...同时,关闭不再需要的资源是良好的编程习惯,可以帮助优化内存使用和防止数据库连接耗尽。
总的来说,Java JDBC数据库连接池是提升Web应用性能的重要技术,通过有效的连接管理和复用,它降低了数据库操作的开销,提升了系统的稳定性和响应速度。在开发过程中,选择合适的连接池实现,并对其进行合理配置,是...