当前位置: 代码迷 >> J2EE >> java中联接SQLSqlserver
  详细解决方案

java中联接SQLSqlserver

热度:104   发布时间:2016-04-21 21:40:26.0
java中连接SQLSqlserver
项目中需要连接多个服务器,数据库都是SQLServer只是版本不同。

public static Boolean changeDataSource(Map map) {
DriverManagerDataSource basicDS = (DriverManagerDataSource) createBean("dataSourceTrends");

basicDS.setUsername((String) map.get("sa"));
basicDS.setPassword((String) map.get("password"));
String url = "jdbc:sqlserver://" + (String) map.get("ip") + ":"
+ (String) map.get("port") + ";DatabaseName="
+ (String) map.get("DatabaseName");

basicDS.setUrl(url);
/* if (map.get("areacode").toString().equals("420300")) {
basicDS.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");// sql2005
  System.out.println("**********sql2005**********");
} else {
basicDS.setDriverClassName("com.microsoft.jdbc.sqlserver.SQLServerDriver");// sql2000
 System.out.println("**********sql2000**********");
}*/     
Boolean isCon;
try {
// isCon = basicDS.getConnection();
// int is = basicDS.getLoginTimeout();
// System.out.println("is :"+ is);
System.out.println(url);
if (basicDS.getConnection() != null)
System.out.println("******************远程数据库连接初始化成功!!*******************");


} catch (SQLException e) {

FileWriter fileWriter = null;
PrintWriter printWriter = null;
Date now = new Date();
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG);
// DateFormat d1 = DateFormat.getDateInstance();
// //默认语言(汉语)下的默认风格(MEDIUM风格,比如:2008-6-16 20:54:53)
try {
fileWriter = new FileWriter("d:/4201/DBConnectLog.txt", true);
printWriter = new PrintWriter(fileWriter);
printWriter.println(df.format(now) + "--:" + url + " 没有连接上");
printWriter.close();
fileWriter.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (printWriter != null) {
printWriter.close();
}
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return false;

}
return true;

}


这是我动态JDBC连接的方法,传过来的map里,装的是数据库属性数据。

--------------------------------------------------------------
问题来了。。
连接其中一个数据库,执行了查询操作,可以查出数据,但是我点下一页后就报错了


[ERROR][2013-11-14 11:07:57,515][http-8989-8][org.hibernate.util.JDBCExceptionReporter][Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知。
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at com.bluestar.dbbx.DbjzxxAction.queryDatas(DbjzxxAction.java:228)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  相关解决方案