0

Ich fand vor kurzem, dass JDBC zwei Möglichkeiten hat, Spalte zu benennen, d. H. "Nach Name" und "nach Label", während "by label" Weg ist standardmäßig.Fehler in Beanutils ResultSetDynaSet?

Eigentlich scheint Spalte Name Begriff für mich verwirrend sein. Und wahrscheinlich nicht nur für mich, sondern auch für Beanutils-Autoren, da sie standardmäßig per Name auf Felder zugreifen (was dazu führt, dass keine Abfrage mit Spaltenaliasen möglich ist). Gleichzeitig they have property useColumnLabel, das hat keine Wirkung, weil es nach der Introspektion gesetzt ist. Hier

ist der Beispielcode

import org.apache.commons.beanutils.*; 

import java.lang.reflect.InvocationTargetException; 
import java.sql.*; 
import java.util.ArrayList; 
import java.util.Iterator; 

public class ResultSetIteratorAttempt { 


    public static void main(String[] args) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { 

     Connection conn = null; 
     Statement stmt = null; 

     Class.forName("com.mysql.jdbc.Driver"); 

     conn = DriverManager.getConnection("jdbc:mysql://localhost/sample","java",""); 

     stmt = conn.createStatement(); 

     ResultSet rs = stmt.executeQuery("SELECT Id as NM1, Name as NM2 FROM DayOfWeek;"); 

     ArrayList results = new ArrayList(); // To hold copied list 

     ResultSetDynaClass rsdc = new ResultSetDynaClass(rs); 
     rsdc.setUseColumnLabel(true); 

     DynaProperty[] properties = rsdc.getDynaProperties(); 
     String propertyName = ""; 
     for(int i=0; i<properties.length; ++i) { 
     propertyName = properties[i].getName(); 
     System.out.println(String.format("Property #%d is %s", i, propertyName)); 
     } 

     Iterator rows = rsdc.iterator(); 
     DynaBean row; 
     while (rows.hasNext()) { 
     row = (DynaBean) rows.next(); 
     System.out.println(String.format("Row is %s", row.get(propertyName))); 
     } 

    } 

} 

Bin ich richtig?

UDPATE

mysql> select * from dayofweek; 
+----+-----------+ 
| Id | Name  | 
+----+-----------+ 
| 5 | Friday | 
| 1 | Monday | 
| 6 | Saturday | 
| 7 | Sunday | 
| 4 | Thursday | 
| 2 | Tuesday | 
| 3 | Wednesday | 
+----+-----------+ 
7 rows in set (0.00 sec) 

Antwort