Tag: jtds

使用不同的jdbc驱动程序连接到多个数据库

我需要编写一个基于守护进程的java进程(非基于Web),它将连接到Oracle 10G数据库,从中读取一些数据,然后连接到SQL Server数据库并将数据写入表。 听起来很简单,但我对此有几个疑问。 我需要有两个jdbc驱动程序,一个用于连接到Oracle数据库,另一个用于连接到sql server数据库。 sql server jdbc驱动程序是jtds jdbc驱动程序( http://jtds.sourceforge.net/ ),对于Oracle我将使用标准的oracle jdbc驱动程序。 我可能会遇到类路径中可用的两个驱动程序的任何问题吗? 我的猜测是我需要的是一个ConnectionManager类来管理连接和一个客户端DAO类,它将调用相关的方法来获取它需要的连接,具体取决于它是从Oracle读取还是写入SQL Server。 这是一种合理的方法还是有更好的设计/模式? 编辑 好吧,我试图整理一个快速的设计解决方案。 见下图 我认为我遇到的问题是如何提交。 这是处理流程 InvoiceBD从工厂类获取Oracle连接,并调用InvoiceUploadDAO.readData将Oracle连接对象传递给它。 InvoiceBD从工厂类获取SQL Server连接,并调用InvoiceUploadDAO.writeData,将SQL Server连接对象传递给它。 InvoiceBD重用Oracle连接将InvoiceUploadDAO.update状态调用为Oracle数据库上的“完成”设置状态。 InvoiceBD提交Oracle连接。 InvoiceBD提交SQL Server连接。 或者如果出现问题,两个连接对象都会回滚。 那个听起来是对的吗? 谢谢

jTDS JDBC驱动程序:getNString()抛出错误

我正在使用jtDS JDBC驱动程序,当我调用ResultSet.getNString(index); 我得到以下exception: run: Exception in thread “main” java.lang.AbstractMethodError: net.sourceforge.jtds.jdbc.JtdsResultSet.getNString(I)Ljava/lang/String; at javasql.ProductsController.PrePopulate(ProductsController.java:51) at javasql.ProductsController.(ProductsController.java:37) at javasql.Program.main(Program.java:25) Java Result: 1 BUILD SUCCESSFUL (total time: 6 seconds) 当我使用getString(index)它工作正常..它只有getNString()我遇到问题,我的MSSQL表中的列被定义为NVarChar 。 那么,是什么给出的? jtDS不支持getNString()吗? 也许它通过相同的getString()函数获得VarChar和NVarChar ? 编辑: 相关的unicode问题..我可以看到尝试使用Unicode无法插入任何一个。 我的列定义为nvarchar(255) ,但以下INSERT语句不起作用: private final String INSERT_FORMAT = “INSERT INTO Products (Name, Price, QuantityInStock) VALUES (N’%s’, %s, %s)”; public void Insert(Product p) { […]

ms sql microsoft的jdbc驱动程序和jTDS的驱动程序之间的差异

每个司机之间有什么区别? 我的意思是,除了其中一个是开源的 每个人的利弊是什么? 你会推荐哪一个? 这里是jTDS自己对这个主题的看法: http ://jtds.sourceforge.net/

存储过程通过Java运行速度比直接在数据库上运行慢30%

我正在使用Java 1.6,JTDS 1.2.2(也只是尝试1.2.4无效)和SQL Server 2005来创建CallableStatement来运行存储过程(没有参数)。 我看到运行相同存储过程的Java包装器比使用SQL Server Management Studio慢30%。 我运行MS SQL分析器,两个进程之间的I / O差别不大,所以我认为它与查询计划缓存无关。 存储的proc不带参数,也不返回任何数据。 它使用服务器端游标来计算填充表所需的值。 我无法看到从Java调用存储过程如何增加30%的开销,当然它只是数据库的一个管道,SQL被发送下来然后数据库执行它….数据库是否可以提供Java应用不同的查询计划? 我已发布到MSDN论坛和sourceforge JTDS论坛(主题:“在JTDS中存储过程比在DB中更直接”)我想知道是否有人有任何关于为什么会发生这种情况的建议? 提前致谢, -詹姆士 (NB不要害怕,我会在找到解决方案后整理其他论坛中的所有答案) Java代码段: sLogger.info(“Preparing call…”); stmt = mCon.prepareCall(“SP_WB200_POPULATE_TABLE_limited_rows”); sLogger.info(“Call prepared. Executing procedure…”); stmt.executeQuery(); sLogger.info(“Procedure complete.”); 我已经运行了sql profiler,并发现了以下内容: Java app:CPU:466,514阅读次数:142,478,387撰写:284,078期限:983,796 SSMS:CPU:466,973阅读次数:142,440,401写作:280,244持续时间:769,851 (两个DBCC DROPCLEANBUFFERS在分析之前运行,并且都产生正确的行数) 所以我的结论是他们都执行相同的读写操作,只是他们这样做的方式不同,你们怎么想? 事实certificate,不同客户端的查询计划明显不同(Java客户端在插入期间更新索引,而不是在更快的SQL客户端中,执行连接的方式也不同(嵌套循环Vs.收集流,嵌套循环Vs索引扫描,唉!))。 这就是为什么,我还不知道(当我到底时,我会重新发帖) 结语 我无法让它正常工作。 我尝试在Java和Mgmt studio客户端之间对连接属性( arithabort , ansi_nulls等)进行同质化。 它最终导致两个不同的客户端具有非常相似的查询/执行计划(但仍然具有不同的实际plan_ids)。 我发布了我在MSDN SQL Server论坛上发现的内容摘要,因为我发现不仅在JDBC客户端和管理工作室之间,而且在Microsoft自己的命令行客户端SQLCMD之间有不同的性能,我还检查了一些更激进的事情,如网络流量也可以将存储的proc包装在另一个存储过程中,只是为了咧嘴笑。 […]

将Android应用程序连接到Microsoft SQL Server 2008

首先。 我是Android应用程序开发环境的新手,我正在尝试使用简单的android应用程序使用jtds-1.3.1.jar驱动程序连接到mssqlserver 2008。 我在网上搜索了很多例子,但我没有连接数据库。 我得到的exception是网络错误IOException:连接超时 我不知道我使用Eclipse juno IDE的代码有什么问题。 这是我的代码 package com.example.Testproject1; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import android.widget.TextView; import java.sql.*; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connectTodatabase(); } public void connectTodatabase() { TextView txtView=(TextView)findViewById(R.id.textView2); String url = “jdbc:jtds:sqlserver://XXX.XXX.X.XXX:1433;DatabaseName=VautomateuShoppi”; String driver = “net.sourceforge.jtds.jdbc.Driver”; […]

存储过程比应用程序慢于Management Studio

我们有一个存储过程,它在10分钟后从应用程序(Spring – DBCP – jtds)调用时可执行运行,但在从SQL Server Managament Stuido执行时运行30秒。 有人可以提供这个问题的线索吗?

ClassNotFoundException:net.sourceforge.jtds.jdbc.Driver

我有java代码连接到MS-SQL数据库并获取一些数据。 在运行代码之前,我在Unix服务器中设置了类路径,以前它工作正常。 但由于某种原因,几天前工作的同一个jar文件抛出了一个Class not found exception java.lang.ClassNotFoundException:net.sourceforge.jtds.jdbc.Driver 我没有jar jar文件,发现我正在加载的驱动程序类: Class.forName(“net.sourceforge.jtds.jdbc.Driver”); 存在于指定的包结构中。 我不明白这是怎么回事。 任何人都可以提出解决此问题的建议。

ResourcePool无法从其主工厂或源获取资源

我正在尝试使用jdbcTemplate连接到Java中的数据库,我得到以下错误。 我用谷歌搜索了很长时间,我找到的所有解决方案都没有解决我的问题。 我尝试了几个不同的数据库(SQLServer和MySQL),但没有一个工作。 SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/promotion-handler-admin] threw exception [Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!] with root cause com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source. at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319) […]

什么是MS SQL Server 2005 Express的jTDS JDBC Connect URL

我正在尝试从java程序连接到本地主机上运行的MS SQL Server 2005 Express数据库。 我尝试了在运行MS SQL Server 2000的另一个系统(相同的jave代码)上使用的相同连接URL(下面)。但这不起作用。 jdbc:jtds:sqlserver://127.0.0.1:1433/Finance 有任何想法吗?

Java Hibernate与SQL Server 2012无法正常工作?

我有一个Java Hibernate项目配置,它与SQL Server 2008 R2配合使用,现在有了新的OS 8.1(从7开始)和SQL Server 2012(快速),我无法连接到SQL服务器。 因为它适用于2008 R2,所以/应该在语法上正确的相关配置: datasource.properties jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver jdbc.url=jdbc:jtds:sqlserver://localhost:1433/dbname;instance=SQLEXPRESS jdbc.username=auser jdbc.password=xyz 我尝试了两种方言org.hibernate.dialect.SQLServerDialect在2008 R2中工作。 hibernate.hbm2ddl.auto=create-drop hibernate.dialect=org.hibernate.dialect.SQLServerDialect #hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect hibernate.show_sql=true springConfiguration.xml SQL Server 2012安装了混合模式身份validation,SQL Server Management Studio连接没有问题(有或没有实例名称)。 我已经更新了SQLEXPRESS的SQL Server Network Configuration 。 SQLEXPRESS的协议: TCP/IP Enabled以及所有TCP/IP Properties – TCP Port到1433的TCP/IP Properties – TCP Port 。 我试过禁用Windows防火墙只是为了测试它是否在路上,但它会导致相同的错误。 我最终添加了防火墙规则,并按照这个优秀的配置SQL Express 2012中的一些步骤来接受远程连接文章 。 错误消息: Caused by: java.lang.AbstractMethodError at […]