Java mysql 喜欢命令
Java mysql like command
我想求助我的代码,它会根据身份证号从数据库中找到相关的名字。
我的代码找到了我试图找到的名字。
但是我想在程序找不到 ID 号码时发送错误消息。
试了很多方法,总是找不到ID号,提示编译成功,没有报错,直接退出程序。
感谢您的帮助。
public void search(String ID) throws SQLException {
Statement mystate = con.createStatement();
String sql = "SELECT*FROM users" +
" WHERE id LIKE " + ID;
ResultSet rs = mystate.executeQuery(sql);
while (rs.next()) {
System.out.println("Your Name is " + rs.getString("name"));
}
}
public void search(String ID) throws SQLException {
Statement mystate = con.createStatement();
String sql = "SELECT*FROM users" +
" WHERE id LIKE " + ID;
ResultSet rs = mystate.executeQuery(sql);
if(rs.next()) {
System.out.println("Your Name is " + rs.getString("name"));
}
else
{
System.out.println("Id not found");
}
}
你的代码有两个大问题:
您没有在 ID
周围加上 SQL 引号,所以它看起来像 SQL 解析器
[的关键字或标识符
SQL 注入攻击(见下文)
您想使用 PreparedStatement
,它可以为您处理这两个问题。然后用一个标志来判断你是否看到了什么:
public void search(String ID) throws SQLException {
boolean sawOne = false;
PreparedStatement mystate = con.prepareStatement(
"SELECT * FROM users WHERE id LIKE ?"
);
mystate.setString(1, ID);
ResultSet rs = mystate.executeQuery(mystate);
while (rs.next()) {
sawOne = true;
System.out.println("Your Name is " + rs.getString("name"));
}
if (!sawOne) {
System.out.println("...");
}
}
我假设 ID
已经有一个通配符(或者你真的不想要)。
或者如果您知道只有一场比赛,或者即使有多场比赛您也只想要一场比赛,您可以添加一个
mystate.setMaxRows(1);
...在 executeQuery()
之前,然后只需使用 if/else
,不需要标志:
if (rs.next()) {
System.out.println("Your Name is " + rs.getString("name"));
} else {
System.out.println("...");
}
强制性SQL-注射link:http://bobby-tables.com/
和卡通:
我想求助我的代码,它会根据身份证号从数据库中找到相关的名字。
我的代码找到了我试图找到的名字。
但是我想在程序找不到 ID 号码时发送错误消息。
试了很多方法,总是找不到ID号,提示编译成功,没有报错,直接退出程序。
感谢您的帮助。
public void search(String ID) throws SQLException {
Statement mystate = con.createStatement();
String sql = "SELECT*FROM users" +
" WHERE id LIKE " + ID;
ResultSet rs = mystate.executeQuery(sql);
while (rs.next()) {
System.out.println("Your Name is " + rs.getString("name"));
}
}
public void search(String ID) throws SQLException {
Statement mystate = con.createStatement();
String sql = "SELECT*FROM users" +
" WHERE id LIKE " + ID;
ResultSet rs = mystate.executeQuery(sql);
if(rs.next()) {
System.out.println("Your Name is " + rs.getString("name"));
}
else
{
System.out.println("Id not found");
}
}
你的代码有两个大问题:
您没有在
[的关键字或标识符ID
周围加上 SQL 引号,所以它看起来像 SQL 解析器SQL 注入攻击(见下文)
您想使用 PreparedStatement
,它可以为您处理这两个问题。然后用一个标志来判断你是否看到了什么:
public void search(String ID) throws SQLException {
boolean sawOne = false;
PreparedStatement mystate = con.prepareStatement(
"SELECT * FROM users WHERE id LIKE ?"
);
mystate.setString(1, ID);
ResultSet rs = mystate.executeQuery(mystate);
while (rs.next()) {
sawOne = true;
System.out.println("Your Name is " + rs.getString("name"));
}
if (!sawOne) {
System.out.println("...");
}
}
我假设 ID
已经有一个通配符(或者你真的不想要)。
或者如果您知道只有一场比赛,或者即使有多场比赛您也只想要一场比赛,您可以添加一个
mystate.setMaxRows(1);
...在 executeQuery()
之前,然后只需使用 if/else
,不需要标志:
if (rs.next()) {
System.out.println("Your Name is " + rs.getString("name"));
} else {
System.out.println("...");
}
强制性SQL-注射link:http://bobby-tables.com/
和卡通: