jsp中mysql查询出数字外都是null

问题描述

我的index.jsp代码:<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%><%@pagecontentType="text/html;charset=GB2312"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@pageimport="java.sql.*"%><%@pageimport="java.lang.*"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>MyJSP'index.jsp'startingpage</title><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><!--<linkrel="stylesheet"type="text/css"href="styles.css">--></head><body>ThisismyJSPpage.<br><%Connectioncon;Statementsql;ResultSetre;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){}try{con=DriverManager.getConnection("jdbc:odbc:sun","sa","");sql=con.createStatement();re=sql.executeQuery("SELECT*FROMnamenum");//out.print(re.getObject(1));ResultSetMetaDatametaData=re.getMetaData();StringBufferresultBuffer=newStringBuffer();intcolNum=metaData.getColumnCount();//out.print(metaData.getColumnCount());for(inti=1;i<=colNum;i++){//out.println(metaData.getColumnName(i));resultBuffer.append(metaData.getColumnName(i)+"t");}resultBuffer.append("n");while(re.next()){for(inti=1;i<=colNum;i++){//out.println(metaData.getColumnName(i));resultBuffer.append(re.getObject(i)+"t");}resultBuffer.append("n");}out.print(resultBuffer);con.close();}catch(SQLExceptione){out.print("findexception");}%></body></html>浏览器中显示的内容是:ThisismyJSPpage.namenumage20012122193322我的数据库表结构是:namenumage张三121王五219李四322只有当name的类型改成int是才能显示,char,varchar,text都显示null,如下这样:ThisismyJSPpage.namenumagenull121null219null322在MySQL的命令行查询中能够完全显示,没有这样的问题。总是不明白哪里出了问题我用的是MyEclipse,建的webproject,tomcat7.0

解决方案

解决方案二:
re.getObject(i)改下试试如果是String类型re.getString(i)如果是int用rs.getInt具体类型用适合的东西试下应该是可以的
解决方案三:
没有人关注啊,亟待解决
解决方案四:
改成getString(i)之后不是null了,但汉字成乱码了,我查过我的MySQL的配置里面编码是gbk,default-character-set=gbk,jsp页面里用的也是gb2312啊,为什么还是乱码?
解决方案五:
估计是乱码的问题,所以没有显示出来,....
解决方案六:
引用3楼baencong的回复:

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

Java出来Stirng自己转下码啊你重新newString下就一行代码而已
解决方案七:
现在出了乱码了,就是怎么改过来的问题,我在jsp页面里加了几个汉字,能显示,在MySQL自己的查询里也能显示,就是jsp里查询显示不出来???
解决方案八:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>你自己定义的JSP编码格式是GB18030数据库出来用newString自己在转换次编码啊
解决方案九:
直接说在哪里改吧,你是说Stringstr=newSting(resultBuffer);?然后呢怎么转换编码?
解决方案十:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>改成<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>的格式
解决方案十一:
引用9楼ke922的回复:

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

这个真不行.
解决方案十二:
引用8楼baencong的回复:

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

Stringstr=newSting(str.getBytes("ISO-8859-1"),"GB2312")如果不行将ISO-8859-1改成UTF-8或者GBK试试看
解决方案十三:
Stringstr=re.getString(i)Stringstr1=newSting(str.getBytes("ISO-8859-1"),"GB2312")
解决方案十四:
newString("要转换的字符串","指定的字符编码");
解决方案十五:
引用11楼cjg520jie的回复:

引用8楼baencong的回复:直接说在哪里改吧,你是说Stringstr=newSting(resultBuffer);?然后呢怎么转换编码?Stringstr=newSting(str.getBytes("ISO-8859-1"),"GB2312")如果不行将ISO-8859-1改成UTF-8或者GBK试试看

改的这些都不行,还是乱码,数据表的名字改成字母就能显示,看来还是编码的问题,就是不知道哪里出了问题
解决方案:
publicclassTool{publicstaticStringtoChinessString(Stringname){try{name=newString(name.getBytes("iso-8859-1"));}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();return"";}returnname;}}然后str=Tool.toChinessString(str);
解决方案:
url="jdbc:mysql://127.0.0.1/mydatabase?user=username&password=password&useUnicode=true&characterEncoding=UTF-8";while(rs.next()){Mapmap=newHashMap();for(inti=1;i<=rsmd.getColumnCount();i++){if(rsmd.getColumnTypeName(i).equals("text")){StringBuffersbf=newStringBuffer();java.io.InputStreamins=rs.getAsciiStream(i);intch=0;if(ins!=null){try{while((ch=ins.read())!=-1){sbf.append((char)ch);}ins.close();map.put(rsmd.getColumnName(i),newString(sbf.toString().getBytes("8859_1"),"GB2312"));}catch(IOExceptionioe){thrownewException(this.getClass().getName()+":_eexecuteQuery(finalStringsql,finalListparams):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的,这是我的代码,运行没有问题,希望能帮你解决问题。

时间: 2024-09-20 20:50:08

jsp中mysql查询出数字外都是null的相关文章

jsp问题-jsp中模糊查询,后台没有出错,为什么实现不了?

问题描述 jsp中模糊查询,后台没有出错,为什么实现不了? 点击查找只是刷新页面,后台没有问题,但是又实现不了 具体代码: <% request.setCharacterEncoding("utf-8"); %> <%! private static final String DBDRIVER ="org.gjt.mm.mysql.Driver"; private static final String DBURL ="jdbc:mysq

sql查询-查询出所有成绩都大于60的学生,表在下面

问题描述 查询出所有成绩都大于60的学生,表在下面 表st 姓名 科目 成绩 张三 语文 80 李四 语文 79 李四 数学 94 王五 语文 97 王五 数学 57 王五 英语 92 赵六 语文 52 赵六 数学 35 赵六 英语 97 赵六 物理 18 ... 解决方案 select * from st group by name having min(成绩)>60; 解决方案二: select * from t_student where id >60; 解决方案三: select *

jsp中如何使用Fotorama,到处都找不到教程,求大侠,详细点,谢了

问题描述 jsp中如何使用Fotorama,到处都找不到教程,求大侠,详细点,谢了 jsp中如何使用Fotorama,到处都找不到教程,求大侠,详细点,谢了

数字异常-在jsp中怎么处理大型数字出现异常现象

问题描述 在jsp中怎么处理大型数字出现异常现象 在jsp页面显示大型数字比如123456.6675,会出现类似这样的数字123456.667498782323,用这个DecimalFormat(formt).format(number)方法,如果你格式定成"#.####"出现数字123456.6674而不是四舍五入的数字,还有其它办法没

关于jsp中连接数据库查询并循环遍历的问题

问题描述 关于jsp中连接数据库查询并循环遍历的问题 String all="select sShopCode,sum(iNumb) as iNumbHj,sum (rMoney) as rMoneyHj from [Data_ShopDailyBill_View] where (dDjDate>='"+qishiriqi+"' and dDjDate<='"+jiezhiriqi+"') group by sShopCode"; S

sqlserver中如何查询出连续日期记录的代码_MsSql

有在论坛上看到一帖,<请教查询出连续日期记录的方法>,截图如下: Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用. 复制代码 代码如下: --创建一个临时表,将会存储连续日期的记录 CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME) DECLARE @sD DATETIME --开始日期 DECLARE @eD DATETIME --结束日期 --在记录中,找出开始与结束日期 SELECT @sD =

jsp中数据库查询 有问题

问题描述 <%@pagelanguage="java"import="java.util.*"import="java.sql.*"pageEncoding="gb2312"%><html><body><%Stringname=(String)request.getParameter("name");Stringpsword=request.getParameter

jsp 中怎样弹出对话框提示

问题描述 急急急谢谢 解决方案 解决方案二:加入javascript不行么,alert解决方案三:引用1楼xc2010_k的回复: 加入javascript不行么,alert alert("Yourmessage!");解决方案四:out.println("<scriptlanguage=javascript>alert('msg!');</script>");解决方案五:引用3楼zell419的回复: out.println("&

php中mysql数据库异步查询实现

问题 通常一个web应用的性能瓶颈在数据库.因为,通常情况下php中mysql查询是串行的.也就是说,如果指定两条sql语句时,第二条sql语句会等到第一条sql语句执行完毕再去执行.这个时候,如果执行2条sql语句,每条执行时间为50ms,全部执行完毕可能需要100ms.既然,主要原因是sql的串行执行导致.那我们是不是可以改变执行方式来提高性能呢?答案是,可以的.我们可以通过异步执行的方式来提高性能. 异步 如果通过异步的方式去执行,可能性能会有很大提升.如果是采用异步的方式,两条sql语句