我使用行集在我的硒框架中传递查询结果。有时数据访问对象抛出以下内容

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.DBConfiguration.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/

10-09 09:22