jsp和SQL Server 2000 的问题
做了个jsp,里面嵌入了个bean
用jsp页面查询数据库得到的结果全都是0000,
而将这个jsp中嵌入的bean class改为Application 运行时,却能得到正确的数据库查询结果
这是为什么呢?
难道时用jsp时,没有能执行数据库查询吗?
为什么不能呢?
比如,你要查询的某项记录数据为int型的 289
结果返回来的是int型的 0
补充强调一点的是,使用access数据库,jsp完全没有问题。
而使用SQL Server 2000 就出现这个问题
所以是不解中ing
清高手帮忙解决!!!!!
问题点数:50、回复次数:16Top
1 楼maweihua(laoma)回复于 2005-02-28 15:59:33 得分 15
我的就是sql server 2000,怎么没问题,但据说微软的jdbc很不好用(用心很险恶)Top
2 楼zjpangxie(专用马甲)回复于 2005-02-28 16:20:01 得分 2
既然bean没错,那问题就可能出在调用bean或调用后显示的地方。。。
没有代码无法判断。。。Top
3 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-02-28 16:22:26 得分 2
呵呵。看看吧Top
4 楼xiciliu()回复于 2005-02-28 16:26:17 得分 0
经过调试
在如果是通过jsp运行bean,则int结果返回为 0
因为查询的结果在bean中就即为 0 了
所以不是显示的问题
改为查询access数据库,完全是正常的
所以说明程序看起来是没有问题的
为什么就在查询SQL是出问题呢?Top
5 楼psyl(蓝法典)回复于 2005-02-28 16:29:42 得分 0
sjcp考试哪报名 ?Top
6 楼xiciliu()回复于 2005-02-28 16:30:04 得分 0
代码?太长了:)Top
7 楼joyaga(joyaga)回复于 2005-02-28 16:30:24 得分 2
只有把代码贴出来看看了Top
8 楼xiciliu()回复于 2005-02-28 16:35:28 得分 0
我检些出来
Top
9 楼joyaga(joyaga)回复于 2005-02-28 16:37:14 得分 2
说说看Top
10 楼xiciliu()回复于 2005-02-28 16:38:21 得分 0
------------jsp-----------------
<%@ page contentType="text/html; charset=ISO8859_1"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*"%>
<%@ page buffer="20kb"%>
<%@ page import="test.week.ChartWeek" %>
<html><body><center>
<%--response.setHeader("Refresh","2");--%><!--设定页面刷新时间-->
<jsp:useBean id="cg" class="test.week.ChartWeek" scope="application"/>
<%
cg.gGeneration();
%>
.......Top
11 楼dfdg002(大幅度感)回复于 2005-02-28 16:45:39 得分 0
欢迎加入JAVA QQ群 9852769Top
12 楼xiciliu()回复于 2005-02-28 16:49:09 得分 0
---------------bean-----------
public class ChartWeek
{
.....
public void gGeneration(){//float [] heightA) {
............
xPce=new int[length];
yDate=new int[length];
GetData instance=new GetData(length);
xPce=instance.getXPce();
yData=instance.getYData();
.........
}
class GetData {
.........
public GetData(int n){
weekNum=n;
yData=get(1);
}
public float[] getXPce() {
return xPce;
}
public int[] getYData(){
return yData;
}
public int[] get(int type){
int [] temp=new int[weekNum];
temp=getByWeek(year);
xPce=new float[weekNum];
for(int i=0;i<temp.length;i++){
//System.out.println("yData["+i+"] :"+temp[i]+" ");
xPce[i]=(float)temp[i]/(float)(5*licenseNum*60*8);//5天工作日
System.out.println(temp[i]+" "+xPce[i]+" "+5*licenseNum*60*8);
}
return temp;
}
public int getTime(String dev , java.util.Date start , java.util.Date end){
//单位:minute
int time=0;
//从视图中去查询结果
//access
//String exeStr="select DISTINCTROW sum(Usingtime) from Worked where (((Outtime between #"+start.toLocaleString()+"# and #"+end.toLocaleString()+"#) OR (Intime between #"+start.toLocaleString()+"# and #"+end.toLocaleString()+"#) OR (Outtime <= #"+start.toLocaleString()+"# and Intime >= #"+end.toLocaleString()+"#)) and (Licensename in ('board_s','boarddes_c','designarch_c')))";
//SQL Server
String exeStr="select sum(Usingtime) from Worked where (((Outtime between '"+start.toLocaleString()+"' and '"+end.toLocaleString()+"') OR (Intime between '"+start.toLocaleString()+"' and '"+end.toLocaleString()+"') OR (Outtime <= '"+start.toLocaleString()+"' and Intime >= '"+end.toLocaleString()+"')) and (Licensename in ('board_s','boarddes_c','designarch_c')))";
//使用SQLServer 2000时要求去掉distinctrow 修饰
try{
Class.forName(Conn.jdbcDriver);
conn = DriverManager.getConnection(Conn.dbpath,Conn.user,Conn.password);
stmt = conn.createStatement();
rs=stmt.executeQuery(exeStr);
teststring=exeStr;
while(rs.next()){
time=rs.getInt(1);
testpoint++;
}
}
catch(SQLException se){exception.append(se.getMessage());se.printStackTrace();}
catch(Exception e){e.printStackTrace();}
finally{
close();
}
return time;
}
public int[] getByWeek(String year){
int yearInt=Integer.parseInt(year);
int [] year_week=new int[weekNum];
java.util.Date start=new java.util.Date();
java.util.Date end=new java.util.Date();
int month1=0;
int month2=0;
start.setMonth(0);
start.setDate(3);
start.setHours(0);
start.setMinutes(0);
start.setSeconds(0);
end.setMonth(0);
end.setDate(9);
end.setHours(0);
end.setMinutes(0);
end.setSeconds(0);
for(int i=1;i<=weekNum;i++)
{
//初始第一周 01/03--01/09
//选择调取数据
year_week[i-1]=getTime("all",start,end);
System.out.println(year_week[i-1]+" start "+start.toLocaleString()+" end "+end.toLocaleString());
start.setDate(start.getDate()+7);
end.setDate(end.getDate()+7);
}
return year_week;
}
...........
}Top
13 楼enjoy330(*寒林*)回复于 2005-02-28 17:07:15 得分 27
是不是你的bean没得到数据,只是一个初始话的直。或者状态没保持住。
ms的JDBC是很恶心的。不过,既然你说application没问题,估计问题也不在这。
建议使用开源SourceForge的jtds.
jtds-0.8.1.jar放在如:E:\j2sdk1.4.2\jre\lib\ext下,就可用。环境变量都不用设
public static final Connection getSQLServerConByJTDS() throws Exception
{
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=yfweb","yfuser" ,"yfuser" );
}
catch (Exception ex) {
System.out.println("[getSQLServerConnection] error : " + ex.getMessage());
}
return connection;
} // end getSQLServerConnection
Top
14 楼xiciliu()回复于 2005-03-01 08:31:26 得分 0
我试试看~~Top
15 楼xiciliu()回复于 2005-03-01 10:20:14 得分 0
Exception:com.microsoft.jdbc.sqlserver.SQLServerDriver
用ms的jdbc时是出现了异常,就是惟独出现在jsp中
jtds好象还是要设置的吧
找不到class中Top
16 楼xiciliu()回复于 2005-03-01 14:39:22 得分 0
顶Top




