java操作数据库进行多个表的查询思路分析
大致思路是将每个表取出的数据按键值的形式放进HashMap
while (rsareaA.next()) {
Map rowDataA = new HashMap();
for (int i = 1; i <= columnCountA; i++) {
rowDataA.put(mdA.getColumnName(i), rsareaA.getObject(i));
}
listA.add(rowDataA);// 将map中的值添加到List中
}
然后将每个表对应的HashMap放进每个对应的list中
listA.add(rowDataA);
最后将全部表存储的list统一放进一个List中
list.add(listA);
最后将list转换为json数组并发送给前台
JSONArray jsonArr = new JSONArray();
jsonArr.add(list);// 将List中的值添加到json数组中
out.print(jsonArr);
前台可以用ajax获取数据
$.ajax({
url: "selectContent",
type: "get",
dataType: "json",
success: function(data) {
console.log(data[0]);//就可以获取7个表的所有数据
},
error: function() {
alert("error!");
}
});
关于数据库数插入据量很大时,可以用存储过程来批量生成数据。
以下为Mysql的存储过程
delimiter $$ #创建一个储存过程
create procedure insertt13()
begin
set @areaName="B1"; #区号
set @column=1; #列号
set @row="十三"; #行号
set @dataName="";
set @tel="";
while @column<=36 do #这里为要生成的数量
insert into areab1 values(@areaName,@row,@column,@dataName,@tel);
set @column=@column+1;
end while;
end$$
delimiter ;
call insertt13();
效果图
下面为java连接数据库的代码
package com.content.servlet;
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class selectContent extends HttpServlet {
private static final long serialVersionUID = 1L;
Connection con;
Statement sqlA, sqlB1, sqlB2, sqlC1, sqlC2, sqlD1, sqlD2;
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
}
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
try {
PrintWriter out = response.getWriter();
List list = new ArrayList(), listA = new ArrayList(), // 创建列表A
listB1 = new ArrayList(), // 创建列表B1
listB2 = new ArrayList(), // 创建列表B2
listC1 = new ArrayList(), // 创建列表C1
listC2 = new ArrayList(), // 创建列表C2
listD1 = new ArrayList(), // 创建列表D1
listD2 = new ArrayList();// 创建列表D2
String uri = "jdbc:mysql://127.0.0.1/temple?"
+ "user=bdm242626210&password=n7mwvrDVcj5gd&characterEncoding=utf-8";
con = DriverManager.getConnection(uri);
sqlA = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sqlB1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sqlB2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sqlC1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sqlC2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sqlD1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sqlD2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String areaA = "select * from areaa", areaB1 = "select * from areab1", areaB2 = "select * from areab2", areaC1 = "select * from areac1", areaC2 = "select * from areac2", areaD1 = "select * from aread1", areaD2 = "select * from aread2";
sqlA = con.createStatement();// 创建sql语句
sqlB1 = con.createStatement();// 创建sql语句
sqlB2 = con.createStatement();// 创建sql语句
sqlC1 = con.createStatement();// 创建sql语句
sqlC2 = con.createStatement();// 创建sql语句
sqlD1 = con.createStatement();// 创建sql语句
sqlD2 = con.createStatement();// 创建sql语句
ResultSet rsareaA = sqlA.executeQuery(areaA), // 执行sql语句
rsareaB1 = sqlB1.executeQuery(areaB1), // 执行sql语句
rsareaB2 = sqlB2.executeQuery(areaB2), // 执行sql语句
rsareaC1 = sqlC1.executeQuery(areaC1), // 执行sql语句
rsareaC2 = sqlC2.executeQuery(areaC2), // 执行sql语句
rsareaD1 = sqlD1.executeQuery(areaD1), // 执行sql语句
rsareaD2 = sqlD2.executeQuery(areaD2);// 执行sql语句
ResultSetMetaData mdA = rsareaA.getMetaData(), // 获得A的结果集结构信息,元数据
mdB1 = rsareaB1.getMetaData(), mdB2 = rsareaB2.getMetaData(), mdC1 = rsareaC1
.getMetaData(), mdC2 = rsareaC2.getMetaData(), mdD1 = rsareaD1
.getMetaData(), mdD2 = rsareaD2.getMetaData();
int columnCountA = mdA.getColumnCount(), // 获得A的列数
columnCountB1 = mdB1.getColumnCount(), columnCountB2 = mdB2
.getColumnCount(), columnCountC1 = mdC1.getColumnCount(), columnCountC2 = mdC2
.getColumnCount(), columnCountD1 = mdD1.getColumnCount(), columnCountD2 = mdD2
.getColumnCount();
// ---------------------A start
while (rsareaA.next()) {
Map rowDataA = new HashMap();
for (int i = 1; i <= columnCountA; i++) {
rowDataA.put(mdA.getColumnName(i), rsareaA.getObject(i));
}
listA.add(rowDataA);// 将map中的值添加到List中
}
// ---------------------A end
// ---------------------B1 start
while (rsareaB1.next()) {
Map rowDataB1 = new HashMap();
for (int i = 1; i <= columnCountB1; i++) {
rowDataB1.put(mdB1.getColumnName(i), rsareaB1.getObject(i));
}
listB1.add(rowDataB1);// 将map中的值添加到List中
}
// ---------------------B1 end
// ---------------------B2 start
while (rsareaB2.next()) {
Map rowDataB2 = new HashMap();
for (int i = 1; i <= columnCountB2; i++) {
rowDataB2.put(mdB2.getColumnName(i), rsareaB2.getObject(i));
}
listB2.add(rowDataB2);// 将map中的值添加到List中
}
// ---------------------B2 end
// ---------------------C1 start
while (rsareaC1.next()) {
Map rowDataC1 = new HashMap();
for (int i = 1; i <= columnCountC1; i++) {
rowDataC1.put(mdC1.getColumnName(i), rsareaC1.getObject(i));
}
listC1.add(rowDataC1);// 将map中的值添加到List中
}
// ---------------------C1 end
// ---------------------C2 start
while (rsareaC2.next()) {
Map rowDataC2 = new HashMap();
for (int i = 1; i <= columnCountC2; i++) {
rowDataC2.put(mdC2.getColumnName(i), rsareaC2.getObject(i));
}
listC2.add(rowDataC2);// 将map中的值添加到List中
}
// ---------------------C2 end
// ---------------------D1 start
while (rsareaD1.next()) {
Map rowDataD1 = new HashMap();
for (int i = 1; i <= columnCountD1; i++) {
rowDataD1.put(mdD1.getColumnName(i), rsareaD1.getObject(i));
}
listD1.add(rowDataD1);// 将map中的值添加到List中
}
// ---------------------D1 end
// ---------------------D2 start
while (rsareaD2.next()) {
Map rowDataD2 = new HashMap();
for (int i = 1; i <= columnCountD2; i++) {
rowDataD2.put(mdD2.getColumnName(i), rsareaD2.getObject(i));
}
listD2.add(rowDataD2);// 将map中的值添加到List中
}
// ---------------------D2 end
list.add(listA);
list.add(listB1);
list.add(listB2);
list.add(listC1);
list.add(listC2);
list.add(listD1);
list.add(listD2);
JSONArray jsonArr = new JSONArray();
jsonArr.add(list);// 将List中的值添加到json数组中
out.print(jsonArr);
con.close();
} catch (SQLException e) {
System.out.println(e);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
}