Java行集/数据访问对象失败

时间:2011-08-01 17:40:00

标签: java jdbc selenium data-access-layer resultset

我使用行集在我的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;

1 个答案:

答案 0 :(得分:0)

这似乎不可能。加载驱动程序类,或者不加载。加载后,使用相同的JDBC URL对DriverManager.getConnection()的连续调用永远不应该出现该错误。还有什么事呢?

编辑:我看到的唯一值得怀疑的是,所有的Configuration。*属性似乎都是某个类中的字段。如果其中一些属性在测试之间更改值,则可能是JDBC驱动程序因为属性值较差而引发该异常,例如Configuration.DBConfiguration.DBConnString。如果它是相当可重复的,请尝试更改

rs.setUrl(Configuration.DBConnString + DB);

String url = Configuration.DBConnString + DB;
log.debug("Using JDBC URL: " + url);
rs.setUrl(url);

发生异常时,查看字符串是否有所不同。