java怎么从mysql查询出来的结果转化为二维数组,举个例子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么从mysql查询出来的结果转化为二维数组,举个例子相关的知识,希望对你有一定的参考价值。
package db;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* 数据库连接类,通用
*
* @author lsy
*
*/
public class DBConnection
public static final String driver = "com.mysql.jdbc.Driver";// 驱动
public static final String url = "jdbc:mysql://localhost:3306/mydb";// mysql固定的URL:jdbc:mysql://localhost:3306/数据库名(我这里是mydb)
public static final String user = "root";// 我的数据库的用户名
public static final String pwd = "123";// 我的数据库密码
public static Connection dBConnection()
Connection con = null;
try
// 加载mysql驱动器
Class.forName(driver);
// 建立数据库连接
con = DriverManager.getConnection(url, user, pwd);
catch (ClassNotFoundException e)
System.out.println("加载驱动器失败");
e.printStackTrace();
catch (SQLException e)
System.out.println("注册驱动器失败");
e.printStackTrace();
return con;
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import db.DBConnection;
/**
*
* 取出数据,存到二维数组里
*
* @return flowers
* @author lsy
*/
public class SelectData
public static final String SELECT = "select* from iris_PCA";
public static final int k = 4;// 4个属性
public double[][] getFlowers() throws SQLException
Connection con = DBConnection.dBConnection();
ResultSet rs;// 创建结果集
PreparedStatement pstmt = con.prepareStatement(SELECT);// 创建一个PreparedStatement对象
rs = pstmt.executeQuery();
// 为初始化数组的大小提供方便
int sample = 0;
while (rs.next())
sample++;
double[][] flower = new double[sample][k];
rs = pstmt.executeQuery();// 特别重要,否则取到的全是0。因为执行上面的while(rs.next())后,ResultSet对象的下标已指到0。
// API:当生成ResultSet对象的Statement对象关闭、重新执行或用来从多个结果的序列获取下一个结果时,ResultSet对象将自动关闭。
for (int i = 0; rs.next(); i++)
for (int j = 0; j < k; j++)
flower[i][j] = rs.getDouble(j + 2);
// 输出二维数组
System.out.println("花花: ");
for (int i = 0; i < flower.length; i++)
for (int j = 0; j < flower[0].length; j++)
System.out.print(flower[i][j] + "\\t");
System.out.println();
pstmt.close();
rs.close();
con.close();
return flower;
public static void main(String[] args)
try
SelectData selectData = new SelectData();
selectData.getFlowers();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
参考技术A
数组是定长的,建议转化为list列表;
有一个stu实体类,属性你应该能看懂吧,那看不懂继续追问public ArrayList<Student> queryAll()
String sql = "select * from stu_manger_sys";
selectAll =true;
this.setApp(sql);
return list;
public void setApp(String sql)
Statement stmt = null;
ResultSet rs = null;
StuNum =0;
list = new ArrayList<>();
try
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
stu = new Student();
stu.setId(rs.getInt(1));
stu.setName(rs.getString(2));
stu.setAge(rs.getInt(3));
stu.setDate(rs.getDate(4));
stu.setHome(rs.getString(5));
stu.setPhoneNumber(rs.getString(6));
StuNum++;
if(selectAll==true)
list.add(stu);
catch (SQLException ex)
追问
我要做的是从mysql里面查询的结果显示到jtable里面,只想到用数组做,不知道还有什么办法
追答为什么想到只有数组?你给我说下你的想法,你用数组的具体原因
喔喔,你可以先保存在list里面,然后在把值赋给数组不就可以了?而且能获得到list的长度
追问list怎么转化成数组,百度一下看不太明白
追答不是直接转换,list可以回去到他的长度,这个长度可以new一个数组;然后foreach遍历list,给每一数组赋值就OK了;。。。话说你用给数组赋值。因为你完全可以在遍历list的循环里面new新的jtable,然后给他赋值就行;你给定的jtable数量肯定有限吧?下面是我做的代码,(就是把数据库值传递给jtable你可以借鉴下)
JLabel [][] jls = new JLabel[StuNum][2];JButton [] jbs = new JButton[StuNum];
int x = 0;
int y = 80 ;
for(final Student stu : list)
);
jls[i][0] = new JLabel();
jls[i][0].setBounds(x+=100, y, 80, 25);
jls[i][1] = new JLabel();
jls[i][1].setBounds(x+=150, y, 80, 25);
jls[i][0].setText(stu.getId()+"");
jls[i][1].setText(stu.getName());
jp.add(jls[i][0]);
jp.add(jls[i][1]);
jp.add(jbs[i]);
i++;
y+=50;
参考技术B 为什么要转换成数组呢?而且还是二维的数组定长的,查询数据库的结果不是固定的,查询结果返回的可能是一条记录,可能是记录的集合,可能是一个数字追问
我要做的是从mysql里查询的结果集显示到jtable里面,我现在只想到用转化成数组做
用asp怎么将查询结果转化为json
你说的是ASP VBS吗?
我这里有一个json编码函数
'Json编码 by Shirne'支持数组,Dictionary,Recordset等对象直接编码,支持数组中 key&":"&value格式
Function JsonEncode(json)
Dim i, l, key, str
str = ""
If IsArray(json) Then
l = UBound(json)
If TypeName(json(0))="String" Then
If InStr(json(0),":")>0 Then
str = str & ""
For i=0 To l
str = str & """" & Left(json(i),InStr(json(i),":")-1) &""":"
str = str & """" & EncodeJSON(Mid(json(i),InStr(json(i),":")+1)) &""""
If i<l Then str = str & ","
Next
str = str & ""
JsonEncode = str
Exit Function
End If
End If
str = str & "["
For i=0 To l
str = str & JsonEncode(json(i))
If i<l Then str = str & ","
Next
str = str & "]"
ElseIf TypeName(json)="Dictionary" Then
l = json.Count
i = 0
str = str & ""
For Each key In json
i = i + 1
str = str & """" & key &""":"
str = str & JsonEncode(json(key))
If i<l Then str = str & ","
Next
str = str & ""
ElseIf TypeName(json)="Recordset" Then
Dim Field
l = json.Fields.Count
str = str & "["
Do Until json.EOF
i = 0
str = str & ""
For Each Field In json.Fields
i = i + 1
str = str & """" & LCase(Field.Name) &""":"
'If UCase(Field.Name)="IP" Then
' str = str & JsonEncode(IPMask(Field.Value))
'Else
str = str & JsonEncode(Field.Value)
'End If
If i<l Then str = str & ","
Next
str = str & ""
json.MoveNext
If Not json.EOF Then str = str & ","
Loop
str = str & "]"
Else
Select Case VarType(json)
Case 2,3,4,5,6
str = str & json
Case Else
str = str & """" & EncodeJSON(json&"") &""""
End Select
End If
JsonEncode = str
End Function
用法:
Response.Write JsonEncode(Array("state:"&stat, "message:"&msg, "url:"¶m))//或
Response.Write JsonEncode(dictionaryObject) 参考技术A asp本身并不支持json,需要手工按照json格式输出才可以。
搜索一个别人写好的函数使用。
以上是关于java怎么从mysql查询出来的结果转化为二维数组,举个例子的主要内容,如果未能解决你的问题,请参考以下文章
linux环境编程,怎么把mysql表里的数据取出来转化成字符串,用mysql_fetch_row查出来的是列植,我要字段谢