我使用行集在我的selenium框架中传递查询结果。有时,数据访问对象会抛出以下内容
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;
答案 0 :(得分:0)
这似乎不可能。加载驱动程序类,或者不加载。加载后,使用相同的JDBC URL对DriverManager.getConnection()
的连续调用永远不应该出现该错误。还有什么事呢?
编辑:我看到的唯一值得怀疑的是,所有的Configuration。*属性似乎都是某个类中的字段。如果其中一些属性在测试之间更改值,则可能是JDBC驱动程序因为属性值较差而引发该异常,例如Configuration.DB
或Configuration.DBConnString
。如果它是相当可重复的,请尝试更改
rs.setUrl(Configuration.DBConnString + DB);
到
String url = Configuration.DBConnString + DB;
log.debug("Using JDBC URL: " + url);
rs.setUrl(url);
发生异常时,查看字符串是否有所不同。