2012-10-27 8 views
8

मैंने जावा जेडीबीसी में पंक्ति गणना प्राप्त करने के विभिन्न तरीकों की कोशिश की है, अखरोट कोई भी सही परिणाम नहीं दे रहा था। क्या कुछ गलत है जो मैं कर रहा हूं?जावा में पंक्ति गणना खोजने का सही तरीका जेडीबीसी

भले ही ग्राहक तालिका खाली है और मुझे पंक्ति के रूप में पंक्ति गणना मिलनी चाहिए, मुझे समझ में नहीं आता कि मुझे शून्य शून्य पंक्ति गणना क्यों मिलती है।

विधि 1 - -

query = "SELECT * FROM customer WHERE username ='"+username+"'"; 
rs = stmt.executeQuery(query); 
ResultSetMetaData metaData = rs.getMetaData(); 
rowcount = metaData.getColumnCount(); 

विधि 2

query = "SELECT * FROM customer WHERE username ='"+username+"'"; 
rs = stmt.executeQuery(query); 
rowcount = rs.last() ? rs.getRow() : 0; 
+4

आपको एक 'COUNT' कथन निष्पादित करना चाहिए:' स्ट्रिंग क्वेरी = "ग्राहक से चुनें COUNT (*) उपयोगकर्ता नाम =?"; stmt.setString (1, उपयोगकर्ता नाम); rs = stmt.executeQuery (क्वेरी); ' –

+3

विधि 1 कॉलम की संख्या प्राप्त करता है - आपको ऐसा क्यों लगता है कि यह काम कर सकता है? – Mark

उत्तर

13

कोड के इस स्निपेट देखें:

import java.io.*; 
import java.sql.*; 

public class CountRows{ 
    public static void main(String[] args) { 
     System.out.println("Count number of rows in a specific table!"); 
     Connection con = null; 
     int count = 0; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctutorial","root","root"); 
      try { 
       Statement st = con.createStatement(); 
       BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
       System.out.println("Enter table name:"); 
       String table = bf.readLine(); 
       ResultSet res = st.executeQuery("SELECT COUNT(*) FROM "+table); 
       while (res.next()){ 
        count = res.getInt(1); 
       } 
       System.out.println("Number of row:"+count); 
      } 
      catch (SQLException s){ 
       System.out.println("SQL statement is not executed!"); 
      } 
     } 
     catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 
2

जब आप JDBC कि TYPE_FORWARD_ONLY उपयोग का समर्थन नहीं करता के साथ काम rowcount पाने के लिए इस विधि।

Statement s = cd.createStatement(); 
ResultSet r = s.executeQuery("SELECT COUNT(*) AS rowcount FROM TableName"); 
r.next(); 
int count = r.getInt("rowcount"); 
r.close(); 
System.out.println("MyTable has " + count + " row(s)."); 

आप उपर्युक्त विधि का उपयोग करके पंक्ति गणना प्राप्त कर सकते हैं।

धन्यवाद ..

-1

विधि नाम के रूप में निर्दिष्ट करता metaData.getColumnCount() सेट परिणाम में स्तंभों की कुल संख्या वापस आ जाएगी लेकिन कुल पंक्तियों (गिनती) की कोई नहीं।

+0

आपको प्रश्न का समाधान भी प्रदान करना चाहिए, यानी पंक्ति का गिनती – mynawaz

+0

प्राप्त करने के लिए किस फ़ंक्शन का उपयोग किया जा सकता है, मैं कहूंगा कि "पंक्ति गणना प्राप्त करें" मेटाडेटा से पुनर्प्राप्त नहीं की जा सकती है क्योंकि यह मेटाडेटा नहीं है बल्कि "वास्तविक" डेटा पर निर्भर करती है। – Krischu

2

इस तरह से मैं जावा में पंक्ति संख्या प्राप्त करने के लिए उपयोग करें:

String query = "SELECT * FROM yourtable"; 

Statement st = sql.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
ResultSet = st.executeQuery(query); 

int rows = 0 
rs.last(); 
rows = rs.getRow(); 
rs.beforeFirst(); 

System.out.println("Your query have " + rows + " rows."; 

मैं इस मदद आप की उम्मीद है।

सम्मान।

+0

आप rs.last() और rs.before फर्स्ट() क्यों कर रहे हैं? –

संबंधित मुद्दे