我开发了一个jsp(web应用程序),其中有一个包含类Db的类包vdb,其源代码位于下方,而jsp文件正在使用返回Connection对象的方法connect()
和year()
返回一个整数值。
方法connect()
在两种情况下都很好(在远程服务器或localhost中),但方法year()
在本地主机的情况下运行良好,但在远程服务器(openshift)中它不起作用。
FILE Db.java
package vdb;
import java.sql.*;
public class Db {
public static synchronized Connection connect()
{
Connection con=null;
try{
String url = "jdbc:mysql://1xx.x.xx.x:xx06/";
String db = "mydb";
String driver = "com.mysql.jdbc.Driver";
String user = "adminaz";
String pass = "mypassword";
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url+db,user,pass);
}
catch(Exception e)
{
}
return con;
}
public static int year()
{
int y=0;
ResultSet rs=null;
try
{
Connection con=connect();
Statement st=con.createStatement();
rs=st.executeQuery("SELECT MAX(START) FROM SESSION");
rs.next();
y=rs.getInt(1);
}
catch (Exception e)
{
System.out.println(e);
}
return y;
}
}
文件index.jsp
<%@page import="java.sql.*;"pageEncoding="UTF-8"%>
<% int y= vdb.Db.year();%>
<%out.println(" CURRENT YEAR "+y);%>
这个或错误有什么问题。如何克服。
答案 0 :(得分:0)
代码没有问题。 问题在于使用了表名的情况。 本地主机在WINDOW OS上,而远程Web服务器(OPENSHIFT)是基于Linux的,在Linux OS中,默认情况下mysql表名是区分大小写的, 由于案例不匹配导致的例外情况。
在linux中默认情况下,mysql查询区分大小写,但在窗口中则不是。