【问题标题】:Java Row Set / Data Access Object FailureJava 行集/数据访问对象失败
【发布时间】:2011-10-17 15:34:54
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    这似乎是不可能的。驱动程序类要么已加载,要么未加载。加载后,使用相同的 JDBC URL 对 DriverManager.getConnection() 的连续调用永远不会出现该错误。还有什么情况?

    编辑: 我看到的唯一可疑之处是您的所有 Configuration.* 属性似乎都是某个类中的字段。如果其中一些属性在测试之间改变了值,则可能是由于错误的属性值(如Configuration.DBConfiguration.DBConnString)而引发了该异常。如果它相当可重复,请尝试更改

    rs.setUrl(Configuration.DBConnString + DB);
    

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

    当异常发生时,看看字符串是否看起来不同。

    【讨论】:

    • 仍然遇到同样的问题。这是来自错误跟踪的更多信息。 at java.sql.DriverManager.getConnection(Unknown Source)at java.sql.DriverManager.getConnection(Unknown Source)at com.sun.rowset.internal.CachedRowSetReader.connect(Unknown Source)at com.sun.rowset.internal.CachedRowSetReader.readData(Unknown Source)at com.sun.rowset.CachedRowSetImpl.execute(Unknown Source)at com.sun.rowset.CachedRowSetImpl.execute(Unknown Source)at com.DataServices.DataAccess.GetRowSet(DataAccess.java:144)
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多