帮我看看这段代码,关于不能同时显示数据库的多条字段的中文记录的问题,急!!!!

rjane 2002-03-13 05:58:11
下面的代码如果只要S4或S5中任一段的转换代码,则能显示对应字段的中文记录,但如果同时转换两个字段,则一个都不能显示了,只显示?,又不报错。我试过所有办法,现在已经穷途末路了,谁能告诉我怎么办?不胜感激!!!!!!!!!


<%@ page language="java" import="java.sql.*" %>
<%@ page contentType="text/html;charset=gb2312" %>
<%
//变量声明
//数据库连接对象
Connection sqlCon;
//Statement对象
Statement sqlStmt;
//记录集对象
ResultSet sqlRst;
//数据库连接字符串
String strCon;
//SQL语句
String strSQL;
//每页记录数
int intPageSize;
//记录总数
int intRowCount;
//总页数
int intPageCount;
//当前页码
int intPage;
//传递参数用变量
String strPage;
//循环变量
int i;

//定义每页记录数为0
intPageSize =3;

//获得当前页码
strPage = request.getParameter("page");
//以不带页码访问时,没有参数,此时为首页
if(strPage==null){
intPage = 1;
}
else{
//转换字符串为整型
intPage = java.lang.Integer.parseInt(strPage);
//对于小于的变量,设置当前页为第一页
if(intPage<1) intPage = 1;
}


//下面的代码为加载JDBD-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//设置数据库连接字符串
//使用js dsn连接
strCon="jdbc:odbc:jxc";

//连接数据库
sqlCon = DriverManager.getConnection(strCon,"sa","");

//创建一个记录指针可以上下移动的只读的Statement对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);

//准备SQL语句
strSQL = "select * from xsd";

//执行SQL语句,获得返回集
sqlRst = sqlStmt.executeQuery(strSQL);

//系统记录指针对最后一行
sqlRst.last();

//获得总行数
intRowCount = sqlRst.getRow();

//计算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//对于大于总页数的页面,调整为最大页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>翻页程序示例</title>
</head>

<p align=center> </p>
<body>
<!--在HTML中画一张表格用于显示记录-->

<table border="0" cellspacing="0" cellpadding="0" width="100%" height="158">
<!--定义表头--->
<tr bgcolor="#CCFFCC">
<td width="71" height="98"><font size="3"> 商品单价</font></td>
<td width="67" height="98"><font size="3">商品数量</font></td>
<td width="50" height="98"><font size="3">总金额</font></td>
<td width="68" height="98"><font size="3">客户名称</font></td>
<td width="67" height="98"><font size="3">商品名称</font></td>
<td width="66" height="98"><font size="3">销售性质</font></td>
<td width="50" height="98"><font size="3">经手人</font></td>
<td width="67" height="98"><font size="3">部门签字</font></td>
<td width="64" height="98"><font size="3">日期</font></td>
<td width="51" height="98"><font size="3">单据号</font></td>
<td width="52" height="98"><font size="3">删除</font></td>
</tr>
<%
if(intPageCount>0){
//移动记录指针到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);

//显示当前记录
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){
%>
<tr bgcolor=#f2f2e6>
<td width="71" height="18"><%=sqlRst.getString(1)%></td>
<td width="67" height="18"><%=sqlRst.getString(2)%></td>
<td width="50" height="18"><%=sqlRst.getString(3)%></td>
<td width="68" height="18"><%String s4=sqlRst.getString(4);

String str1=new String(s4.getBytes("ISO-8859-1"),"gb2312");
out.println(str1);


%></td>
<td width="67" height="18"><%String s5=sqlRst.getString(5);
String str2=new String(s5.getBytes("ISO-8859-1"),"gb2312");
out.println(str2);

%></td>
<td width="66" height="18"><%=sqlRst.getString(6)%></td>
<td width="50" height="18"><%=sqlRst.getString(7)%></td>
<td width="67" height="18"><%=sqlRst.getString(8)%></td>
<td width="64" height="18"><%=sqlRst.getString(9)%></td>
<td width="51" height="18"><%=sqlRst.getString(10)%></td>
<td width="52" height="18">
<form name="form1" method="post" action="del.jsp">
<input type="submit" name="Submit" value="删除">
<input type="hidden" name="djh" value=<%=sqlRst.getString(10)%>>
</form>
</td>
</tr>
<%
//移动到下一条记录
sqlRst.next();
i++;
}
}
%>
</table>
</div>
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="125">
<tr bgcolor="#99FFCC"> <!--定义翻页用表单-->
<form action="PageView.jsp" method="GET">

<td height="52" align="right"> <%
//生成用于翻页的超链
if(intPage!=1)
//不是第一页,生成........
{

out.println("<A HREF=PageView.jsp?page=1>第一页</A>");
out.println("<A HREF=PageView.jsp?page=" + (intPage-1) + ">上一页</A>");
}
if(intPage!=intPageCount)
//不是最后一页,生成........
{
out.println("<A HREF=PageView.jsp?page=" + (intPage+1) + ">下一页</A>");
out.println("<A HREF=PageView.jsp?page=" + intPageCount + ">最后一页</A>");
}
%> 输入页数:
<input type="text" size="3" name="Page">
<!--显示当前页数与总页数-->
页数:<font color="#FF0000"><%=intPage%>/<%=intPageCount%></font>
</form>
</tr>
</table>


</body>

</html>
<%
//关闭记录集
sqlRst.close();

//关闭Statement对象
sqlStmt.close();

//关闭数据库
sqlCon.close();
%>
...全文
2 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rjane 2002-03-13
我在前一页添加记录是就转换了,而且成功了。但这一页显示数据库类容就不能多个字段同时显示了。你可以同时显示多个字段的中文记录吗?
回复
iloveyouonlyonce 2002-03-13
你应该在写如数据进数据库前转化为GB2312,取出来的时候转化为ISO-8859-1,然后在charset配置为gb2312就可以,我就是这样做的
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告