Java 用于在数据库表中搜索子字符串的类似MySQL的查询
我已将数据保存在MySQL数据库表中。我使用jTextField获取用户输入。我想在jtable中显示用户输入子字符串所在的行 我试过的代码:Java 用于在数据库表中搜索子字符串的类似MySQL的查询,java,mysql,substring,sql-like,Java,Mysql,Substring,Sql Like,我已将数据保存在MySQL数据库表中。我使用jTextField获取用户输入。我想在jtable中显示用户输入子字符串所在的行 我试过的代码: private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { try{ Class.forName("com.mysql.jdbc.Driver");
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/date","root","");
String query="SELECT * FROM ok where day like '%=?%'";
PreparedStatement prepstmt=conn.prepareStatement(query);
prepstmt.setString(1,jTextField2.getText()); // include this for showing only particular row else remove this line
ResultSet rs=prepstmt.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
在我的例子中,要搜索的子字符串是由用户在jTextField1中输入的,我希望使用该用户输入
请更正我的**字符串查询=”** 我相信库不会替换字符串中的
?
。您需要执行以下操作:
String query="SELECT * FROM ok WHERE day LIKE CONCAT('%', ?, '%')";
或者,您可以使用Java构建字符串:
String query="SELECT * FROM ok WHERE day LIKE ?";
PreparedStatement prepstmt = conn.prepareStatement(query);
prepstmt.setString(1, '%' + jTextField2.getText() + '%');
您可能希望从用户提供的字符串中删除
%
和
字符。是的,它现在正在工作,但在查询执行后它在表中不显示任何内容。表是否包含特定的字符串?像foo=textfieldcontentbar
?=
符号是故意的吗?@SamlanA删除了=符号,现在它工作了。谢谢你能解释一下=符号的原因吗?你在原始代码中有它,所以我按原样添加了它!好啊还有一件事,我们可以做任何事情来忽略子字符串的搜索情况吗