我的index.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page contentType="text/html; charset=GB2312" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><%@ page import="java.sql.*" %>
<%@ page import="java.lang.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
    This is my JSP page. <br>
    <%
     Connection con;
     Statement sql;
     ResultSet re;
     try{
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    
     }catch(ClassNotFoundException e){}
     try{
     con=DriverManager.getConnection("jdbc:odbc:sun","sa","");    
     sql=con.createStatement();
     re=sql.executeQuery("SELECT * FROM namenum");
     //out.print(re.getObject(1));
     ResultSetMetaData metaData=re.getMetaData();
     StringBuffer resultBuffer=new StringBuffer();
     int colNum=metaData.getColumnCount();
     //out.print(metaData.getColumnCount());
     for(int i=1;i<=colNum;i++){
     //out.println(metaData.getColumnName(i));
     resultBuffer.append(metaData.getColumnName(i)+"\t");
     }
     resultBuffer.append("\n");
     while(re.next()){
     for(int i=1;i<=colNum;i++){
         //out.println(metaData.getColumnName(i));
         resultBuffer.append(re.getObject(i)+"\t");
         }
     resultBuffer.append("\n");
     }
     out.print(resultBuffer);
     con.close();
     }catch(SQLException e){out.print("findexception");}
    %>
  </body>
</html>
浏览器中显示的内容是:
This is my JSP page.
name num age 200 1 21 2 2 19 3 3 22 
我的数据库表结构是:
name   num  age
张三   1    21
王五   2    19 
李四   3    22
只有当name的类型改成int是才能显示,char,varchar,text都显示null,如下这样:
This is my JSP page.
name num age null 1 21 null 2 19 null 3 22
在MySQL的命令行查询中能够完全显示,没有这样的问题。
总是不明白哪里出了问题
我用的是MyEclipse,建的webproject,tomcat7.0
 

解决方案 »

  1.   

    re.getObject(i)   改下  试试  如果是String类型re.getString(i)   如果是int用rs.getInt   具体类型用适合的东西试下   应该是可以的
      

  2.   

    改成getString(i)之后不是null了,但汉字成乱码了,我查过我的MySQL的配置里面 编码是gbk,default-character-set=gbk,jsp页面里用的也是gb2312啊,为什么还是乱码?
      

  3.   

    Java出来Stirng自己转下码啊  你重新  new String下  就一行代码而已
      

  4.   

    现在出了乱码了,就是怎么改过来的问题,我在jsp页面里加了几个汉字,能显示,在MySQL自己的查询里也能显示,就是jsp里查询显示不出来???
      

  5.   

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    你自己定义的JSP编码格式是GB18030   数据库出来用new String 自己在转换次编码啊
      

  6.   

    直接说在哪里改吧,你是说String str=new Sting(resultBuffer);?然后呢怎么转换编码?
      

  7.   

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    改成<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>的格式
      

  8.   


    String str=new Sting(str.getBytes("ISO-8859-1"),"GB2312")
    如果不行  将ISO-8859-1  改成UTF-8或者GBK试试看
      

  9.   

    String str = re.getString(i)
    String str1=new Sting(str.getBytes("ISO-8859-1"),"GB2312")
      

  10.   

    new String ("要转换的字符串","指定的字符编码");
      

  11.   

    public class Tool {

    public static String toChinessString(String name)
    {
    try {
    name=new String(name.getBytes("iso-8859-1"));
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return "";
    }
    return name;
    }}
    然后str=Tool.toChinessString(str);
      

  12.   

    url="jdbc:mysql://127.0.0.1/mydatabase?user=username&password=password&useUnicode=true&characterEncoding=UTF-8";while (rs.next()) {
        Map map = new HashMap();
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
            if (rsmd.getColumnTypeName(i).equals("text")) {
                StringBuffer sbf = new StringBuffer();
                java.io.InputStream ins = rs.getAsciiStream(i);
                int ch = 0;
                if (ins != null) {
                    try {
                        while ((ch = ins.read()) != -1) {
                            sbf.append((char) ch);
                        }
                        ins.close();
                        map.put(rsmd.getColumnName(i), new String(sbf.toString().getBytes("8859_1"), "GB2312"));
                    } catch (IOException ioe) {
                        throw new Exception(this.getClass().getName() + ":_eexecuteQuery(final String sql, final List params):pstmt.executeQuery()失败。IOException错误信息:" + ioe.getMessage() + "。sql:" + sql);
                    }
                } else {
                    map.put(rsmd.getColumnName(i), null);
                }
            } else {
                map.put(rsmd.getColumnName(i), rs.getObject(i));
            }
        }
        getListResult().add(map);
    }mysql的字符集也设置成utf8的,这是我的代码,运行没有问题,希望能帮你解决问题。