【问题标题】:How check whether a particular data exits in column如何检查列中是否存在特定数据
【发布时间】:2019-03-14 05:54:40
【问题描述】:

我正在开发带有数据库的 java swing 项目。有一个按选项搜索(下拉菜单)来选择用户想要搜索的属性,紧挨着下拉菜单的是一个文本字段,用户可以在其中输入值然后单击搜索。现在我想在该特定列中搜索该特定值(由用户通过 dropdowm 选择)如果它退出我想打印它们“找到”如果不是那么我想显示未找到消息..请找到下面附上图片和代码。

例如:如果用户从下拉列表中选择“客户 ID”,这是一个列名,他们在文本文件中输入 id 作为“123456”,那么如果它在列中退出,那么我需要打印找到的消息,否则我需要找不到打印。

String column = jcombo2.getSelectedItem().toString();
    String value = key.getText();
    DefaultTableModel model = (DefaultTableModel) customerinfo.getModel();
    DefaultTableModel model2 = (DefaultTableModel) customerinfo.getModel();

    try {
     Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/customerinfo", "root", "");
     Statement st = con.createStatement();
     ResultSet rs;
     String mysqlQuery = "SELECT * FROM `cust_info` WHERE `"+column+"` ='"+value+"'";
     rs =st.executeQuery(mysqlQuery);
     while(rs.next()) {
         String ci = rs.getString("customer id");
         model.addRow(new Object[] {ci});
     }


 }catch(Exception e) {
     System.out.println(e.getMessage());
 }

【问题讨论】:

  • 您的问题到底是什么?执行引用的代码是否有任何错误/意外行为?也许您的问题更多是针对Code Review Stack Exchange 而不是SO。干杯。

标签: java mysql


【解决方案1】:

试试这个:

String mysqlQuery = "SELECT COUNT(*) FROM `cust_info` WHERE `"+column+"` ='"+value+"'";
rs = st.executeQuery(mysqlQuery);
if (rs.next() && (rs.getInt(1) != 0))
  printFoundIt(); // or whatever you want to do
else
  printDidntFindIt(); // or whatever you want to do
st.close();

或者,如果您想用找到的物品填满表格:

String mysqlQuery = "SELECT * FROM `cust_info` WHERE `"+column+"` ='"+value+"'";
rs = st.executeQuery(mysqlQuery);
boolean found_it = false;
while (rs.next())
{
  found_it = true;
  String ci = rs.getString("customer id");
  model.addRow(new Object[] {ci});
}
st.close();

if (found_it)
  printFoundIt(); // or whatever you want to do
else
  printDidntFindIt(); // or whatever you want to do

与之前相同,但在找到第一个元素后直接打印“找到它”:

String mysqlQuery = "SELECT * FROM `cust_info` WHERE `"+column+"` ='"+value+"'";
rs = st.executeQuery(mysqlQuery);
boolean found_it = false;
while (rs.next())
{
  if (!found_it)
  {
    printFoundIt(); // or whatever you want to do
    found_it = true;
  }
  String ci = rs.getString("customer id");
  model.addRow(new Object[] {ci});
}
st.close();

if (!found_it)
  printDidntFindIt(); // or whatever you want to do

【讨论】:

  • 感谢您的代码有效,但需要进行以下更正。 String mysqlQuery = "SELECT *FROM cust_info WHERE "+column+" ='"+value+"'"; rs = st.executeQuery(mysqlQuery); if (rs.next() && (rs.getInt(1) != 0)) { ci = rs.getString("customer id"); cn = rs.getString("客户名称"); model.addRow(new Object[] {ci,cn}); }else System.out.println("未找到"); // 或者你想做的任何事情 st.close();
猜你喜欢
  • 2013-12-14
  • 2016-02-23
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 2013-01-14
  • 1970-01-01
  • 2013-07-16
相关资源
最近更新 更多