所以我是 JDBC - SQL Programming 的初学者。我需要一些关于SYNTAX的建议。
所以,问题 =我正在尝试搜索记录中具有名称(函数参数中提供的字符串)的记录。以下是我的代码。现在我已经设计了这样的代码,可以有超过1条同名的记录,因此所有记录的数据都将被打印(通过ShowData()函数)。
protected static void SearchbyName (String toCompareName)
{
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
boolean flag = false; //to confirm if record has found atleast once
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT idEmployee FROM employee WHERE name = ' "+toCompareName+" ' ");
if( !(rs.next()) ) //if ResultSet is not empty
{
while(rs.next()) //reading all records with the same name, extracted by Query
{
int foundID = rs.getInt("idEmployee"); //extracting ID of found record
ShowRecord(foundID); //prints record of foundID fromDB
flag = true; //set flag
}
}
if(flag==false) //if no record found
{
JOptionPane.showMessageDialog(null, "ERROR:: No Records Found..", "Not Found", JOptionPane.ERROR_MESSAGE);
}
//close connection
if(rs!=null)
{ rs.close(); }
if(stmt!=null)
{ stmt.close(); }
if(conn!=null)
{ conn.close(); }
}
catch(SQLException e)
{ System.err.println(e); }
catch(Exception e)
{ System.err.println(e); }
}
所以在这里。据我所知, RESULTSET rs 或 查询 存在一些问题我正在执行。 请帮助。 &安培;如果您可以建议更好的搜索方法,请务必。我将在同一模式上再编写4个函数 SearchbyAge,SearchbyQualification,SearchbySpecialization 。
答案 0 :(得分:3)
这就够了
while(rs.next()) //reading all records with the same name, extracted by Query
{
int foundID = rs.getInt("idEmployee"); //extracting ID of found record
ShowRecord(foundID); //prints record of foundID fromDB
flag = true; //set flag
}
您不必使用if
案例
if( !(rs.next()) )
这将移至resultset
答案 1 :(得分:0)
<强> SOVLED 强>
我的错误是在查询中。我在字符串的语法中添加空格,我正在比较。
错误 =`“(.. WHERE name =”'+ toCompareName +'“”);
RIGHT =`“(.. WHERE name =”'+ toCompareName +'“”);
就这样吧。希望它对其他人有帮助。 :)