try{
     currentRow.addElement(new String(rs.getString( i ).getBytes("ISO8859_1"),"GBK"));
 }catch (UnsupportedEncodingException e) {
    System.out.println("Error: Method: dbconn.iso2gb :"+e.getMessage());
}

解决方案 »

  1.   

    加了RUN时报错:
    java.lang.NullPointerException at gjers.JavaOracle.getNextRow(JavaOracle.java:148) at gjers.JavaOracle.displayResultSet(JavaOracle.java:120) at gjers.JavaOracle.getTable(JavaOracle.java:92) at gjers.JavaOracle.<init>(JavaOracle.java:78) at gjers.JavaOracle.main(JavaOracle.java:172)
      

  2.   

    整个程序如下:
    package gjers;import java.sql.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.io.UnsupportedEncodingException;public class JavaOracle extends JFrame {   //数据库变量定义
       private Connection connection;
       private Statement statement;
       private ResultSet resultSet;
       private ResultSetMetaData rsMetaData;   //GUI变量定义
       private JTable table;
       private JTextArea inputQuery;
       private JButton submitQuery;   public JavaOracle()
       {
          //Form的标题
          super( "输入SQL语句,按提交按钮查看结果。" );
          //url中指定ODBC中设置的DSN名称
          String url = "jdbc:oracle:thin:@192.168.1.1:1521:aaa";
          String username = "aaa";
          String password = "aaa";
          //加载驱动程序以连接数据库
          try {
             Class.forName( "oracle.jdbc.driver.OracleDriver" );
             connection = DriverManager.getConnection(
                url, username, password );
          }
          //捕获加载驱动程序异常
          catch ( ClassNotFoundException cnfex ) {
             System.err.println(
                "装载 JDBC/ODBC 驱动程序失败。" );
             cnfex.printStackTrace();
             System.exit( 1 );  // terminate program
          }
          //捕获连接数据库异常
          catch ( SQLException sqlex ) {
             System.err.println( "无法连接数据库" );
             sqlex.printStackTrace();
             System.exit( 1 );  // terminate program
          }
          //如果数据库连接成功,则建立GUI
          //SQL语句
          String test="select * from card_main where rownum<10";
          inputQuery = new JTextArea( test, 4, 30 );
          submitQuery = new JButton( "查询" );
          //Button事件
          submitQuery.addActionListener(
             new ActionListener() {
                public void actionPerformed( ActionEvent e )
                {
                   getTable();
                }
             }
          );      JPanel topPanel = new JPanel();
          topPanel.setLayout( new BorderLayout() );
          //将"输入查询"编辑框布置到 "CENTER"
          topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER );
          //将"提交查询"按钮布置到 "SOUTH"
          topPanel.add( submitQuery, BorderLayout.SOUTH );
          table = new JTable();
          Container c = getContentPane();
          c.setLayout( new BorderLayout() );
          //将"topPanel"编辑框布置到 "NORTH"
          c.add( topPanel, BorderLayout.NORTH );
          //将"table"编辑框布置到 "CENTER"
          c.add( table, BorderLayout.CENTER );
          getTable();
          setSize( 800, 600 );
          //显示Form
          show();
       }   private void getTable()
       {
          try {
                   //执行SQL语句
             String query = inputQuery.getText();
             statement = connection.createStatement();
             resultSet = statement.executeQuery( query );
             //在表格中显示查询结果
             displayResultSet( resultSet );
          }
          catch ( SQLException sqlex ) {
             sqlex.printStackTrace();
          }
       }   private void displayResultSet( ResultSet rs )
          throws SQLException
       {
          //定位到达第一条记录
          boolean moreRecords = rs.next();
          //如果没有记录,则提示一条消息
          if ( ! moreRecords ) {
             JOptionPane.showMessageDialog( this,
                "结果集中无记录" );
             setTitle( "无记录显示" );
             return;
          }
          Vector columnHeads = new Vector();
          Vector rows = new Vector();
          try {
             //获取字段的名称
             ResultSetMetaData rsmd = rs.getMetaData();
             for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
                columnHeads.addElement( rsmd.getColumnName( i ) );
             //获取记录集
             do {
                rows.addElement( getNextRow( rs, rsmd ) );
             } while ( rs.next() );
             //在表格中显示查询结果
             table = new JTable( rows, columnHeads );
             JScrollPane scroller = new JScrollPane( table );
             Container c = getContentPane();
             c.remove(1);
             c.add( scroller, BorderLayout.CENTER );
             //刷新Table
             c.validate();
          }
          catch ( SQLException sqlex ) {
             sqlex.printStackTrace();
          }
       }
       private Vector getNextRow( ResultSet rs,
                                  ResultSetMetaData rsmd )
           throws SQLException
       {
          Vector currentRow = new Vector();
         for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
    /***********************************/
       //原语名-->  currentRow.addElement( rs.getString( i ) );  //新语名但报错,如下
           try{
                currentRow.addElement(new String(rs.getString( i ).getBytes("ISO8859_1"),"GBK"));
            }catch (UnsupportedEncodingException e) {
               System.out.println("Error: Method: dbconn.iso2gb :"+e.getMessage());
           }
         //返回一条记录
          return currentRow;
       }   public void shutDown()
       {
          try {
                   //断开数据库连接
             connection.close();
          }
          catch ( SQLException sqlex ) {
             System.err.println( "Unable to disconnect" );
             sqlex.printStackTrace();
          }
       }   public static void main( String args[] )
       {
          final JavaOracle app =
             new JavaOracle();
          app.addWindowListener(
             new WindowAdapter() {
                public void windowClosing( WindowEvent e )
                {
                   app.shutDown();
                   System.exit( 0 );
                }
             }
          );
       }
    }
      

  3.   

    上面是整个脚本:用的是 oracle816数据库,请大家帮忙,已两天的!!
      

  4.   

    把rs.getString( i )的值在currentRow.addElement之前都打印出来看看是否有null值
      

  5.   

    这段代码中 connection为空,检查一下
    private void getTable()
       {
          try {
                   //执行SQL语句
             String query = inputQuery.getText();
             statement = connection.createStatement();
             resultSet = statement.executeQuery( query );
             //在表格中显示查询结果
             displayResultSet( resultSet );
          }
          catch ( SQLException sqlex ) {
             sqlex.printStackTrace();
          }
       }
      

  6.   

    如果是null,那就
    currentRow.addElement("");
      

  7.   

    请3332221119(飘)、 teddy_huang(生活多美好,睡觉) 两位大侠,把我的代码做做修改,放在上面谢谢了!
      

  8.   

    if(rs.getString(i)==null){
        currentRow.addElement("");
    }else{
        currentRow.addElement(new String(rs.getString( i ).getBytes("ISO8859_1"),"GBK"));
    }