私はSybaseに移動したMySQLデータベースを実行していたJava/JSPを使用しているWebアプリケーションを使用しています。Javaを使用したSybaseクエリの準備ができていない文
私は私が私のクエリのためのPreparedStatementを使用してきたすべての関連する接続部(Sybaseのコネクタおよび関連するコード)
あると考えているものを変更しました。 MySQLで動作していたものは、もはや何も返されません(エラーや結果)。
私がテストした最初の簡単なクエリは、テーブル "appuser"の名前とパスワードのユーザー値と一致するログインフォームです。
提供されたコードのPrepared Statementは、以前はSybaseで動作していましたが、もはや動作しませんでした。
以下に関連コードを示します。他に何かが必要な場合は教えてください。
public void connectDB() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException
{
/* String userName="****";
String password="******";
String url="jdbc:sybase:sybdev1dw/ETL_MON";
Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance();
conn=DriverManager.getConnection(url, userName, password); */
String driver = "com.sybase.jdbc2.jdbc.SybDriver";
String host = "********";
String dbName = "********";
String url = "jdbc:sybase:Tds:" + host + ":4110" +"?SERVICENAME=" + dbName;
String username = "*******";
String password = "*********";
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
System.out.println("Connection successful"+conn);
}
public Boolean loginAction(String name, String pass, String role,HttpServletRequest request) throws SQLException {
Boolean valid=false;
session=request.getSession();
PreparedStatement stmt=conn.prepareStatement("SELECT pass FROM appuser WHERE name=?");
stmt.setString(1, name);
results=stmt.executeQuery();
System.out.println("loginAction:"+results.getFetchSize());
while(results.next())
{
if(results.getString("pass").equals(pass))
{
valid=true;
session.setAttribute("name",name);
session.setAttribute("role",role);
}
else
{
valid=false;
}
}
System.out.println("loginAction:"+valid);
return valid;
}
エラーが発生しますか? – Jacob
エラーは発生していないようです。それはクエリを実行し、結果が返されなかったかのように動作し、後でコードが "ログインに失敗しました"という画面にリダイレクトされます。 – LoganFrederick
あなたのsystem.out.printlnステートメントは実際に印刷されますか?あなたが「働いていない」と言うとき、それはどういう意味ですか? – Kal