BBS水木清华站∶精华区

发信人: yangruijun (nickname), 信区: Java        
 
1.我的jdbc选出的结果中文显示乱码,而西文可以(applet中). 
2.我的jdbc可以查询数据,也可以添加和删除表,但是不能向表中插入数据。 
  各位仁兄如有解决的原代码或思路请提供,谢谢! 
  附本人邮件地址:ruijun@ice.edu.cn 
 
 
 
发信人: Sailors (GiGi), 信区: Java        
 
【 在 yangruijun (nickname) 的大作中提到: 】 
 1.我的jdbc选出的结果中文显示乱码,而西文可以(applet中). 
 2.我的jdbc可以查询数据,也可以添加和删除表,但是不能向表中插入数据。 
   各位仁兄如有解决的原代码或思路请提供,谢谢! 
   附本人邮件地址:ruijun@ice.edu.cn 
你的第一个问题我还没有碰到过,第二个问题我想应该是这样: 
stmt.executeUpdate("INSERT INTO tablename VALUE(***)"); 
其中,***应该是立即数,如果你要用变量名,则为: 
stmt.executeUpdate("INSERT INTO tablename VALUE("+valuable1+","+valuable2+","+ 
...+","+valuableN+")"); 
 
 
 
发信人: manpo (来来), 信区: Java        
 
由于数据库的编码方式与Java的编码方式不一致(如Sybase和DB2, 
需要进行转换,一个例程(Transfer DB2): 
 
public void executeQuery(String query) { 
        if (connection == null || statement == null) { 
            System.err.println("There is no database to execute the query."); 
            return; 
        } 
        try { 
                        byte[] b1= query.getBytes(); 
                        query=new String(b1,"cp437"); 
            resultSet = statement.executeQuery(query); 
            metaData = resultSet.getMetaData(); 
             
            int numberOfColumns =  metaData.getColumnCount(); 
            columnNames = new String[numberOfColumns]; 
            // Get the column names and cache them. 
            // Then we can close the connection. 
            for(int column = 0; column < numberOfColumns; column++) { 
                columnNames[column] = metaData.getColumnLabel(column+1); 
            } 
 
            // Get all rows. 
            rows = new Vector(); 
            while (resultSet.next()) { 
                Vector newRow = new Vector(); 
                for (int i = 1; i <= getColumnCount(); i++) { 
                        String s=""; 
                    if ((isStringClass(i-1)) && (resultSet.getObject(i)!=null) ){ 
                        try{ 
                        byte[] b= ((String)resultSet.getObject(i)).getBytes("cp437"); 
                        s=new String(b); 
                        }catch(UnsupportedEncodingException e){ 
                                System.out.println("代码页转换错误"); 
                        }catch(NullPointerException e){ 
                  }      
                        newRow.addElement(s); 
                    }else         
                    newRow.addElement(resultSet.getObject(i)); 
 
                } 
                rows.addElement(newRow); 
            } 
            //  close(); Need to copy the metaData, bug in jdbc:odbc driver. 
            fireTableChanged(null); // Tell the listeners a new table has arrived. 
        } 
        catch(UnsupportedEncodingException e){ 
                                System.out.println("代码页转换错误"); 
 
        }catch (SQLException ex) { 
            System.err.println(ex); 
        } 
    } 
【 在 Sailors (GiGi) 的大作中提到: 】 
 你的第一个问题我还没有碰到过,第二个问题我想应该是这样: 
 stmt.executeUpdate("INSERT INTO tablename VALUE(***)"); 
其中,***应该是立即数,如果你要用变量名,则为: 
 stmt.executeUpdate("INSERT INTO tablename VALUE("+valuable1+","+valuable2+","+ 
 ...+","+valuableN+")"); 
 
 
 
 

BBS水木清华站∶精华区