Jdbcrowset ошибка? Возврат исключения nullpointer! - PullRequest
1 голос
/ 01 мая 2011
package CrimeFile;

import com.sun.rowset.JdbcRowSetImpl;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sql.rowset.JdbcRowSet;

/**
 *
 * @author singgum3b
 */
public class test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            // TODO code application logic here
                    JdbcRowSet jrsi=new JdbcRowSetImpl();
                    jrsi.setUrl("jdbc:sqlserver://localhost:1433;databaseName=CrimeFile");                    
                    jrsi.setUsername("sa");
                    jrsi.setPassword("hellokitty");
                    jrsi.setCommand("select * from dbo.Target");
                    jrsi.execute();
        }              
        catch (SQLException ex) {            
            Logger.getLogger(test.class.getName()).log(Level.ALL, null, ex);
        } 
    }
}

Исключение:

Exception in thread "main" java.lang.NullPointerException
    at com.sun.rowset.JdbcRowSetImpl.prepare(JdbcRowSetImpl.java:666)
    at com.sun.rowset.JdbcRowSetImpl.execute(JdbcRowSetImpl.java:553)
    at CrimeFile.test.main(test.java:30)
Java Result: 1

(строка 30: crsi.excute (); )
Я использую SQL Server 2008 и MS JDBC 3.0. Я погуглил и обнаружил, что этот код такой же, как в примере Sun ссылка . Я ошибаюсь?

Ответы [ 3 ]

2 голосов
/ 10 октября 2012

У меня возникла та же проблема, и я пришел к выводу, что проблема в том, что драйвер Microsoft не поддерживает комбинацию conn.prepareStatemen(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);, как указано на веб-сайте Microsoft , что приводит к исключению метода prepare ().Я взял исходный код здесь создал свой собственный MyJdbcRowSetImpl и изменил параметр prepareStatement на ResultSet.TYPE_SCROLL_SENSITIVE

Драйвер Jtds не был решением, так как он не поддерживает наборы строк.

1 голос
/ 02 мая 2011

Хорошо, ответ был на переключение на драйвер JtDS, который можно найти здесь

В драйвере MS JDBC явно что-то не так.

0 голосов
/ 14 августа 2012

Я помню, что это исключение NullPointerException происходит со мной, но только если я вызываю execute (), когда мне НЕ следует этого делать, т.е. когда я использую JdbcRowSetImpl с ResultSet в качестве аргумента

private JdbcRowSet executeWithResultSet(Connection conn, String sqlQuery)
        throws SQLException {
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sqlQuery);
    JdbcRowSet jdbcRs = new JdbcRowSetImpl(rs);
    jdbcRs.execute(); //<-- results to the error as reported

    return jdbcRs;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...