将数据从MySQL存储到多维数组?

时间:2015-08-30 15:58:15

标签: java mysql arrays swing netbeans

我正在尝试存储从MySQL数据库表中调用的数据,其中数据将基于特定的用户编号。我使用PreparedStatementResultSet设置了连接。使用while loop时,我需要调用数据库中的数据并将其存储在此数组中。存储后,我需要调用数组中的这些数据,以便在界面上的文本字段中显示。

以下是编码:

public static void find(int x)
{
  Class.forName("com.mysql.jdbc.Driver");
           Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","root");

            PreparedStatement stmt=conn.PrepareStatement("Select * from employee where userNum ='" + x +"'");
            ResultSet rs = stmt.executeQuery();
          while(rs.next())
          {

          }

我试图在while loop中加入一些语句,以便将数据从数组显示到接口。

1 个答案:

答案 0 :(得分:1)

不是使用字符串连接来将x值放入查询中,而是在字符串中放置?,然后使用setInt(1, x)函数设置要替换查询的值。索引从1开始。

在遍历列表之后使用TYPE_SCROLL_INSENSITIVE来获取结果集first()只是为了获取行计数来初始化2D数组。为每个列获取特定类型可能更好,而不是仅仅将所有内容都视为对象。但是如果有用的话就可以做到。

PreparedStatement stmt = conn.prepareStatement("Select * from employee where userNum=?",
        ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE
);
stmt.setInt(1, x);

ResultSet rs = stmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
List l = new ArrayList();
rs.first();
int rowcount = 0;
do {
    rowcount++;
} while (rs.next());
rs.first();
int rowindex = 0;
Object array2D[][] = new Object[rowcount][];
do {
    array2D[rowindex] = new Object[numberOfColumns];
    for (int i = 0; i < numberOfColumns; i++) {
        array2D[rowindex][i] = rs.getObject(i + 1);
    }
    // prints each row on separate line
    System.out.println("array2D[" + rowindex + "] = " + Arrays.toString(array2D[rowindex])); 
    rowindex++;
} while (rs.next());
System.out.println("array2D = " + Arrays.deepToString(array2D));