`
- 浏览:
408040 次
- 性别:
- 来自:
深圳
-
-
packagecom.mdj.dmdatabase.DmDriverManager;
-
importjava.io.File;
-
importjava.io.FileInputStream;
-
importjava.io.FileNotFoundException;
-
importjava.io.FileWriter;
-
importjava.io.IOException;
-
importjava.io.InputStream;
-
importjava.io.PrintWriter;
-
importjava.io.UnsupportedEncodingException;
-
importjava.sql.Connection;
-
importjava.sql.DatabaseMetaData;
-
importjava.sql.DriverManager;
-
importjava.sql.PreparedStatement;
-
importjava.sql.ResultSet;
-
importjava.sql.SQLException;
-
importjava.sql.Statement;
-
importjava.util.Date;
-
importjava.util.List;
-
importjava.util.Map;
-
importjava.util.Properties;
-
importjava.util.Timer;
-
importjava.util.TimerTask;
-
importjava.util.Vector;
-
importjavax.xml.parsers.DocumentBuilder;
-
importjavax.xml.parsers.DocumentBuilderFactory;
-
importjavax.xml.parsers.ParserConfigurationException;
-
importorg.apache.commons.dbutils.DbUtils;
-
importorg.apache.commons.dbutils.QueryRunner;
-
importorg.apache.commons.dbutils.handlers.BeanListHandler;
-
importorg.apache.commons.dbutils.handlers.MapListHandler;
-
importorg.w3c.dom.Document;
-
importorg.w3c.dom.Element;
-
importorg.w3c.dom.NodeList;
-
importorg.xml.sax.SAXException;
-
importcom.mdj.dmdatabase.pool.Dmconnection;
-
-
-
publicclassDatabaseManagerextendsDmconnection{
-
-
-
privatestaticfinallongserialVersionUID=1L;
-
-
-
privateDatabaseMetaDatadatabasemetaData;
-
-
-
privateResultSetresultset=null;
-
-
-
privateMapmap=null;
-
-
-
privateListlist=null;
-
-
-
privateConnectioncon=null;
-
-
-
privateVector<Connection>pool=null;
-
-
-
privateStringdriverclass="dm.jdbc.driver.DmDriver";
-
-
-
privateStringusername="SYSDBA";
-
-
-
privateStringpassword="123456";
-
-
-
privateStringurl="jdbc:dm://localhost:12345/guest";
-
-
-
privatestaticStringfilepath=null;
-
-
-
privateStringlogpath="..//server.log";
-
-
-
privateintmaxwaittime=10;
-
-
-
privateintdelaytime=10;
-
-
-
privateintmaxconnection=10;
-
-
-
privateintminconnection=5;
-
-
-
privateintpoolsize=10;
-
-
-
privatestaticDatabaseManagermanager=null;
-
-
-
privateTimertimer;
-
privatePrintWriterwriter;
-
privatebooleanloading=false;
-
-
-
privateDatabaseManager(){
-
try{
- init();
-
Filefile=newFile(logpath);
-
writer=newPrintWriter(newFileWriter(file.getAbsolutePath(),
-
true),true);
- addConnection();
-
}catch(IOExceptione){
- e.printStackTrace();
- }
- }
-
privatevoidinit(){
-
if(loading==false){
- config(filepath);
-
}else{
- readconfig(filepath);
- }
-
pool=newVector<Connection>(maxconnection);
-
timer=newTimer(true);
- }
-
staticpublicsynchronizedDatabaseManagergetinstance(Stringpath){
-
- DatabaseManager.filepath=path;
-
if(manager==null){
-
manager=newDatabaseManager();
- }
-
returnmanager;
- }
-
privatevoidaddConnection(){
-
serverlog("serverstart");
-
for(inti=0;i<maxconnection;i++){
-
try{
- Class.forName(driverclass);
- DriverManager.setLogWriter(writer);
- DriverManager.setLoginTimeout(maxwaittime);
- con=DriverManager.getConnection(url,username,password);
- pool.add(con);
-
}catch(ClassNotFoundExceptione){
-
- serverlog(e.getMessage());
-
}catch(SQLExceptione){
-
- serverlog(e.getMessage());
- }
- }
- }
-
-
-
publicsynchronizedConnectiongetConnection()throwsSQLException{
-
if(pool.size()>0){
-
con=pool.get(0);
-
pool.remove(0);
- scaner();
-
returncon;
-
}else{
-
returncon;
- }
- }
-
-
-
publicsynchronizedConnectiongetConnection(Stringusername,
- Stringpassword){
-
if(pool.size()>0){
-
con=pool.get(0);
-
pool.remove(0);
-
returncon;
-
}else{
-
returncon;
- }
- }
-
publicsynchronizedvoidreleaseConnection(Connectioncon){
- pool.add(con);
- }
-
-
-
publicvoidcloseConnectionPool()throwsSQLException{
-
for(inti=0;i<pool.size();i++){
- pool.get(i).close();
- pool.clear();
- timer.cancel();
- }
- }
-
-
-
privatevoidscaner(){
-
TimerTasktask=newTimerTask(){
-
@Override
-
publicvoidrun(){
-
-
if(manager.pool.size()<maxconnection){
-
while(manager.pool.size()<maxconnection){
- addConnection();
- }
- }
- }
- };
-
timer.schedule(task,10000,10000);
- }
-
-
-
-
-
privatevoidconfig(Stringpath){
-
loading=true;
- DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
-
try{
- DocumentBuilderbuilder=factory.newDocumentBuilder();
- Documentdocument=builder.parse(DatabaseManager.filepath);
-
NodeListnodelist=document.getElementsByTagName("dbmsdriver");
-
for(inti=0;i<nodelist.getLength();i++){
- Elementelement=(Element)nodelist.item(i);
-
driverclass=element.getElementsByTagName("driverclass").item(
-
0).getFirstChild().getNodeValue();
-
url=element.getElementsByTagName("url").item(0)
- .getFirstChild().getNodeValue();
-
username=element.getElementsByTagName("username").item(0)
- .getFirstChild().getNodeValue();
-
password=element.getElementsByTagName("password").item(0)
- .getFirstChild().getNodeValue();
- maxconnection=Integer
-
.parseInt(element.getElementsByTagName("maxconnection")
-
.item(0).getFirstChild().getNodeValue());
- minconnection=Integer
-
.parseInt(element.getElementsByTagName("minconnection")
-
.item(0).getFirstChild().getNodeValue());
-
logpath=element.getElementsByTagName("logpath").item(0)
- .getFirstChild().getNodeValue();
- maxwaittime=Integer.parseInt(element.getElementsByTagName(
-
"maxwaittime").item(0).getFirstChild().getNodeValue());
- delaytime=Integer.parseInt(element.getElementsByTagName(
-
"delaytime").item(0).getFirstChild().getNodeValue());
- }
-
}catch(ParserConfigurationExceptione){
-
- e.printStackTrace();
-
serverlog(newDate()+":/t"+e.getMessage()+"/n");
-
}catch(SAXExceptione){
- e.printStackTrace();
-
serverlog(newDate()+":/t"+e.getMessage()+"/n");
-
}catch(IOExceptione){
- e.printStackTrace();
-
serverlog(newDate()+":/t"+e.getMessage()+"/n");
- }
- }
-
-
-
publicvoidreadconfig(Stringpath){
-
loading=false;
-
Propertiesproperties=newProperties();
-
try{
-
InputStreamin=newFileInputStream(DatabaseManager.filepath);
- properties.load(in);
-
driverclass=properties.getProperty("driverclass");
-
url=properties.getProperty("url");
-
username=properties.getProperty("username");
-
password=properties.getProperty("password");
- maxconnection=Integer.parseInt(properties
-
.getProperty("maxconnection"));
- minconnection=Integer.parseInt(properties
-
.getProperty("minconnection"));
-
delaytime=Integer.parseInt(properties.getProperty("delaytime"));
-
logpath=properties.getProperty("logpath");
- in.close();
-
}catch(FileNotFoundExceptione){
- e.printStackTrace();
-
}catch(IOExceptione){
- e.printStackTrace();
- }
- }
-
-
-
privatevoidserverlog(Stringmsg){
-
writer.println(newDate()+":"+msg);
- writer.close();
- }
-
-
-
publicvoidsetLoginTimeout(intseconds)throwsSQLException{
-
this.maxwaittime=seconds;
- }
-
-
-
publicintgetLoginTimeout()throwsSQLException{
-
returnmaxwaittime;
- }
-
-
-
publicvoidsetLogWriter(PrintWriterout)throwsSQLException{
-
this.writer=out;
- }
-
-
-
publicPrintWritergetLogWriter()throwsSQLException{
-
returnwriter;
- }
-
-
-
@Override
-
publicListlistexecuteQuery(Stringsql,Classbeanclass)
-
throwsSQLException{
- con=getConnection();
- DbUtils.loadDriver(driverclass);
-
-
QueryRunnerqueryrunner=newQueryRunner();
- list=(List)queryrunner.query(con,sql,
-
newBeanListHandler(beanclass));
- releaseConnection(con);
-
returnlist;
- }
-
-
-
@Override
-
publicMapmapexecuteQuery(Stringsql)throwsSQLException{
-
- con=getConnection();
- DbUtils.loadDriver(driverclass);
-
QueryRunnerqueryrunner=newQueryRunner();
-
list=(List)queryrunner.query(con,sql,newMapListHandler());
- releaseConnection(con);
-
for(inti=0;i<list.size();i++){
- map=(Map)list.get(i);
- }
-
returnmap;
- }
-
-
-
publicResultSetgetTables(Stringcatalog,StringschemaPattern,
-
StringtableNamePattern,String[]types)throwsSQLException{
- con=getConnection();
- databasemetaData=con.getMetaData();
- resultset=databasemetaData.getTables(catalog,schemaPattern,
- tableNamePattern,types);
- releaseConnection(con);
-
returnresultset;
- }
-
-
-
@Override
-
publicintgetJDBCMajorVersion()throwsSQLException{
-
- con=getConnection();
- databasemetaData=con.getMetaData();
-
intversion=databasemetaData.getJDBCMajorVersion();
- releaseConnection(con);
-
returnversion;
- }
-
-
-
@Override
-
publicintgetJDBCMinorVersion()throwsSQLException{
-
- con=getConnection();
- databasemetaData=con.getMetaData();
-
intversion=databasemetaData.getJDBCMinorVersion();
- releaseConnection(con);
-
returnversion;
- }
-
@Override
-
-
-
publicintgetMaxConnections()throwsSQLException{
- con=getConnection();
- databasemetaData=con.getMetaData();
-
intmaxconnection=databasemetaData.getMaxConnections();
- releaseConnection(con);
-
returnmaxconnection;
- }
-
-
-
@Override
-
publicintgetMaxStatements()throwsSQLException{
-
- con=getConnection();
- databasemetaData=con.getMetaData();
-
intminconnection=databasemetaData.getMaxStatements();
- releaseConnection(con);
-
returnminconnection;
- }
-
-
-
publicintgeneralUpdate(Stringsql){
-
intresult=0;
- Statementstatement;
-
try{
- con=getConnection();
- statement=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
- ResultSet.CONCUR_UPDATABLE);
- result=statement.executeUpdate(sql);
- statement.close();
- releaseConnection(con);
-
}catch(SQLExceptione){
-
-
serverlog(e.getSQLState()+"/t"+e.getMessage());
- }
-
returnresult;
- }
-
publicResultSetgeneralQuery(Stringsql){
-
ResultSetresult=null;
- Statementstatement;
-
try{
- con=getConnection();
- statement=con.createStatement();
- result=statement.executeQuery(sql);
- result.close();
- statement.close();
- releaseConnection(con);
-
}catch(SQLExceptione){
-
serverlog(e.getSQLState()+"/t"+e.getMessage());
- }
-
returnresult;
- }
-
publicStringtoChinese(Stringstr,StringoldcharsetName,
- StringnewcharsetName){
-
Stringchinesestr=null;
-
if(str.equals(null)||str==""){
-
chinesestr="";
-
}else{
-
try{
-
chinesestr=newString(str.getBytes(oldcharsetName),
- newcharsetName);
-
}catch(UnsupportedEncodingExceptione){
-
serverlog("/t"+e.getMessage());
- }
- }
-
returnchinesestr;
- }
- }
-
packagecom.mdj.dmdatabase.test;
-
importjava.io.IOException;
-
importjava.sql.Connection;
-
importjava.sql.SQLException;
-
importjava.util.List;
-
importjava.util.Map;
-
importcom.mdj.dmdatabase.DmDriverManager.DatabaseManager;
-
importcom.mdj.dmdatabase.javabean.Guest;
-
-
-
publicclassTest{
-
-
-
privateDatabaseManagermanager;
-
-
-
privateConnectioncon=null;
-
publicTest(Stringpath)throwsIOException,SQLException{
- manager=DatabaseManager.getinstance(path);
-
-
-
-
-
-
Mapmap=manager.mapexecuteQuery("select*fromguestbook");
-
for(inti=0;i<map.size();i++){
-
System.out.println(map.get("author")+""+map.get("title")+""
-
+map.get("ip")+map.get("updatetime")+""
-
+map.get("content"));
- }
-
Listlist=manager.listexecuteQuery("select*fromguestbook",
-
Guest.class);
-
Guestguestbook=null;
-
for(inti=0;i<list.size();i++){
- guestbook=(Guest)list.get(i);
- System.out
-
.println(guestbook.getAuthor()+"/t"
-
+guestbook.getTitle()+"/t"+guestbook.getIp()
-
+"/t"+guestbook.getUpdatetime()+"/t"
- +guestbook.getContent());
- }
- manager.releaseConnection(con);manager.closeConnectionPool();
- }
-
publicstaticvoidmain(String[]args){
-
Stringpath=System.getProperty("user.dir")+"//src//sysconfig.xml";
-
try{
-
newTest(path);
-
}catch(SQLExceptione){
-
}catch(IOExceptione){
- e.printStackTrace();
- }
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Java连接池2.0,即EasyConnectionPool 2.0,是针对数据库连接管理的优化升级版本,旨在提高应用程序在处理数据库连接时的效率和稳定性。在这个版本中,开发团队引入了一个新的组件——连接池控制器(Manager),它...
在描述中提到了“数据库连接池2.0”,这可能是`easyconnectionpool`的一个新版本,相比于之前的1.5版本,它引入了一个名为“Manager”的连接池控制器。这个控制器是连接池的核心部分,负责分配、回收和管理数据库...
CPPC++_PCLPoint Cloud Library点云库学习记录
基于Python的百度百科爬虫
CPPC++_Qt 之 GUI 控件使用 网络 架构原理 运行机制理解DTK 重绘控件方式的框架解析IDE 技巧
10020
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
cppc++
2000d
Apache Kafka:Kafka集群运维与监控.docx
CPPC++_TNN是由腾讯优图实验室和光影实验室共同开发的一种面向移动桌面和服务器的统一深度学习推理框架,TNN具有
huluxia.apk
Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。 Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析
[CSP-J 2023] 小苹果的代码
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
基于SVM的简单机器学习分类,可以使用svm,knn,朴素贝叶斯,决策树四种机器学习方法进行分类
基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Python实现源码+文档说明(高分毕设)基于YOLOv5和PSPNet的实时目标检测和语义分割系统Pyt
CPPC++_通过carlarosbridge在carla上实现自动驾驶planning and control