我试图存储从MySQL数据库表中调用的数据,其中数据将基于特定的用户号码。我已经使用PreparedStatement
和ResultSet
设置了连接。使用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
内部放置一些语句,以便显示从数组到接口的数据。
不使用字符串连接将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));