2012-09-16 14 views
0

MySQL的数据我要检查新输入的数据是否已经在表中比较整数文本字段值在Java

代码:

txtNo = new JTextField(); 
{ 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String srcurl1  = "jdbc:mysql://localhost:3306/DB_name"; 
     Connection con  = DriverManager.getConnection(srcurl1,"root","paswrd"); 
     Statement stmt1  = con.createStatement(); 
     ResultSet rs1  = stmt1.executeQuery("select No from bank where No='"+txtNo.getText()+"' "); 

     int ch =rs1.getInt("No"); 
     int ch4= Integer.parseInt(txtNo.getText()); 

     if(ch==ch4) // input 58 == 58 
     System.out.println("already exits"); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception:"+e); 
    } 
} 

错误: Exception:java.sql.SQLException: Illegal operation on empty result set.

+0

什么是在您的数据库中的列*没有*的SQL类型?它被声明为一个整数或一个varchar? – Sujay

+0

NO被声明为varchar –

回答

0

你需要检查,如果结果集元素与否:

while(rs1.next()) 
{ 
    int ch = rs1.getInt("No"); 
    // ... 
} 
+0

while(rs1.next()){chl = rs1.getInt(“No”); int ch4 = Integer.parseInt(txtNo.getText()); if(ch == ch4){ .... }} 仍然收到异常,我错了 –

0

您需要首先检查ResultSet以查看它是否包含行:

if (rs1.next()) { 
    int ch =rs1.getInt("No"); 
    ... 
} 
0

当select语句返回一个空集合时,会得到此异常。添加一个try/catch块,它根据知道数据不在catch块中的表中。

0

检查数据库中是否存在特定的记录如下可能只是最简单的方法:

Select 1 from bank where No = [your_supplied_value] 

如果查询使用提供的数据在数据库中找到一行或返回空结果集,则该查询将返回1。因此,您需要检查的是在结果集中是否返回ANY值或是否为空格。

下面是一个示例代码,您开始:

txtNo = new JTextField(); 
{ 
    try { 
     String compareText = txtNo.getText().trim(); 

     if(compareText.length() > 0){ 
      Class.forName("com.mysql.jdbc.Driver"); 
      String srcurl1  = "jdbc:mysql://localhost:3306/DB_name"; 
      Connection con  = DriverManager.getConnection(srcurl1,"root","paswrd"); 
      Statement stmt1  = con.createStatement(); 
      ResultSet rs1  = stmt1.executeQuery("select 1 from bank where No='"+txtNo.getText()+"' "); 

      boolean isPresent = rs1.next(); 

      if(isPresent){ 
       System.out.println("Already exists!!"); 
      } 
     } 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception:"+e); 
    } 
} 

我希望这不是你最后的代码,因为那里是多个问题:

  • 你不管理您的资源正确。完成查询数据库后,应考虑关闭结果集,语句和连接对象。

  • 请注意,我检查了JTextField中的文本是否为空。当知道文本字段没有任何价值时,这是防止调用数据库的好方法。

  • 我会建议使用PreparedStatement而不是语句来查询数据库。

0

ResultSet第一行之前最初定位。因此,在致电getXXX()方法之一之前,您需要致电next()将其移至下一行(并检查它是否返回true)。