mysql中不能存储数组,但是可以通过传入的字符串截取成多个字符然后传入到临时表中,然后使用游标或者直接关联表过滤数据来储存。
坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都被动防护网小微创业公司专业提供企业网站制作营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。
具体步骤如下所示:
1、创建数据库,就如下图所示一样。
2、根据学生编号批量删除学生信息,如下图所示。
3、声明初始化变量,看到以下画面。
4、获取传入参数数组长度,创建临时表,所输入的如下图所示。
5、截取数组字符串并依次存入到临时表中供后面业务使用。
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.LinkedList;import java.util.List;public class DataToArray { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://localhost:3306/test";// 改成你的数据库连接 Connection conn = DriverManager.getConnection(url, "root", "fuhaiwei");// 改成你用户名密码 String sql = "select * from user";// 改成你的查询语句 PreparedStatement prestmt = conn.prepareStatement(sql); ResultSet rs = prestmt.executeQuery(); Object[][] data = getDataArray(rs); printArray(data); rs.close(); prestmt.close(); conn.close(); } private static void printArray(Object[][] data) { for (int i = 0; i data.length; i++) { for (int j = 0; j data[i].length; j++) { System.out.print(data[i][j] + " "); } Syste...
返回数组,也是返回一列,没有试过两列。
可以考虑先返回数据,然后放到数据中。
把数组转换成字符串后再存入数据库
参考函数:
implode() ---把数组转换成字符串
explode() ---把字符串转换成数组
手册里有详细说明
序列化以后存储.
对于一维数组可以简单的用
implode
explode
函数做数组——串的变换,但需注意分隔符要使用数组中不存在的字符
对于多维数组可以用序列化函数处理
serialize
unserialize
函数的用法手册中都有
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();
}
}
}