我使用行集在我的硒框架中传递查询结果。有时数据访问对象抛出以下内容
java.sql.SQLException:找不到适用于jdbc:jtds:sqlserver:// MYDatabasename:1433 / DB的驱动程序
它使用相同的驱动程序和行集进行访问,并且偶尔会失败。任何帮助,将不胜感激。
行集:
public static RowSet GetRowSet(String SqlQuery, String[] Parameters, String DB){
CachedRowSet rs;
String ROWSET_IMPL_CLASS = "com.sun.rowset.CachedRowSetImpl";
rs = null;
try {
Class<?> c = Class.forName(ROWSET_IMPL_CLASS);
rs = (CachedRowSet) c.newInstance();
rs.setUrl(Configuration.DBConnString + DB);
rs.setUsername(Configuration.DBUser );
rs.setPassword(Configuration.DBPwd );
rs.setReadOnly(true);
rs.setCommand(SqlQuery);
for (int p=0;
p<Parameters.length;
p++)
{
rs.setString(p+1, Parameters[p]);
}
rs.execute();
代码示例:
public void examplevoid(String string, String string2)
throws Exception {
RowSet RoS = null;
RoS = Example.GetExample(string, string2);
while (RoS.next()) {
String Example = RoS.getString("Example");
selenium.click(Example)
selenium.waitForPageToLoad(setup.timeoutsetting);
}
RoS.close();
它使用并依次调用行集:
public static RowSet GetExample(String string, String string2) throws
String[] Parameters = {string, string2};
RowSet ExampleRowSet= null;
ExampleRowSet = DataAccess.GetRowSet("Some SQL HERE", Parameters, Configuration.DB);
return Example;
最佳答案
这似乎是不可能的。驱动程序类已加载,或者未加载。加载后,使用相同的JDBC URL连续调用DriverManager.getConnection()
应该永远不会出现该错误。还有什么事吗?
编辑:我看到的唯一可疑的事情是,您的所有Configuration。*属性似乎都是某个类中的字段。如果这些属性中的某些属性正在测试之间更改值,则可能是由于Configuration.DB
或Configuration.DBConnString
之类的属性值错误,JDBC驱动程序正在引发该异常。如果相当可重复,请尝试更改
rs.setUrl(Configuration.DBConnString + DB);
至
String url = Configuration.DBConnString + DB;
log.debug("Using JDBC URL: " + url);
rs.setUrl(url);
发生异常时,查看字符串是否不同。
关于java - Java行集/数据访问对象失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6902213/