1 package com.dao.db;
2
3 import java.sql.Connection;
4 import java.sql.SQLException;
5
6 /**
7 * 数据库连接层MYSQL
8 * @author Administrator
9 *
10 */
11 public class DBConnection {
12
13
14 /**
15 * 连接数据库
16 * @return
17 */
18 public static Connection getDBConnection()
19 {
20 // 1. 注册驱动
21 try {
22 Class.forName("com.mysql.jdbc.Driver");
23 } catch (ClassNotFoundException e) {
24 // TODO Auto-generated catch block
25 e.printStackTrace();
26 }
27 // 获取数据库的连接
28 try {
29 Connection conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=utf-8", "root", "root");
30 return conn;
31 } catch (SQLException e1) {
32 e1.printStackTrace();
33 }
34 return null;
35 }
36
37 }
1 package com.dao.db;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.ResultSetMetaData;
7 import java.sql.SQLException;
8 import java.sql.Types;
9 import java.util.ArrayList;
10 import java.util.HashMap;
11
12 /**
13 * MYSQL数据库底层封装
14 * @author Administrator
15 *
16 */
17 public class DBManager {
18
19 private PreparedStatement pstmt;
20 private Connection conn;
21 private ResultSet rs;
22
23
24 /**
25 * 打开数据库
26 */
27 public DBManager() {
28 conn = DBConnection.getDBConnection();
29 }
30
31 /**
32 * 执行修改添加操作
33 * @param coulmn
34 * @param type
35 * @param sql
36 * @return
37 * @throws SQLException
38 */
39 public boolean updateOrAdd(String[] coulmn, int[] type, String sql) throws SQLException
40 {
41 if(!setPstmtParam(coulmn, type, sql))
42 return false;
43 boolean flag = pstmt.executeUpdate()>0?true:false;
44 closeDB();
45 return flag;
46 }
47 /**
48 * 获取查询结果集
49 * @param coulmn
50 * @param type
51 * @param sql
52 * @throws SQLException
53 */
54 public DataTable getResultData(String[] coulmn, int[] type, String sql) throws SQLException
55 {
56 DataTable dt = new DataTable();
57
58 ArrayList<HashMap<String, String>>list = new ArrayList<HashMap<String, String>>();
59
60 if(!setPstmtParam(coulmn, type, sql))
61 return null;
62 rs = pstmt.executeQuery();
63 ResultSetMetaData rsmd = rs.getMetaData();//取数据库的列名
64 int numberOfColumns = rsmd.getColumnCount();
65 while(rs.next())
66 {
67 HashMap<String, String> rsTree = new HashMap<String, String>();
68 for(int r=1;r<numberOfColumns+1;r++)
69 {
70 rsTree.put(rsmd.getColumnName(r),rs.getObject(r).toString());
71 }
72 list.add(rsTree);
73 }
74 closeDB();
75 dt.setDataTable(list);
76 return dt;
77 }
78
79 /**
80 * 参数设置
81 * @param coulmn
82 * @param type
83 * @throws SQLException
84 * @throws NumberFormatException
85 */
86 private boolean setPstmtParam(String[] coulmn, int[] type, String sql) throws NumberFormatException, SQLException
87 {
88 if(sql== null) return false;
89 pstmt = conn.prepareStatement(sql);
90 if(coulmn != null && type != null && coulmn.length !=0 && type.length !=0 )
91 {
92 for (int i = 0; i<type.length; i++) {
93 switch (type[i]) {
94 case Types.INTEGER:
95 pstmt.setInt(i+1, Integer.parseInt(coulmn[i]));
96 break;
97 case Types.BOOLEAN:
98 pstmt.setBoolean(i+1, Boolean.parseBoolean(coulmn[i]));
99 break;
100 case Types.CHAR:
101 pstmt.setString(i+1, coulmn[i]);
102 break;
103 case Types.DOUBLE:
104 pstmt.setDouble(i+1, Double.parseDouble(coulmn[i]));
105 break;
106 case Types.FLOAT:
107 pstmt.setFloat(i+1, Float.parseFloat(coulmn[i]));
108 break;
109 default:
110 break;
111 }
112 }
113 }
114 return true;
115 }
116
117 /**
118 * 关闭数据库
119 * @throws SQLException
120 */
121 private void closeDB() throws SQLException
122 {
123 if(rs != null)
124 {
125 rs.close();
126 }
127 if(pstmt != null)
128 {
129 pstmt.close();
130 }
131 if(conn != null)
132 {
133 conn.close();
134 }
135
136 }
137 }
1 package com.dao.db;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.Iterator;
6 import java.util.Map;
7 import java.util.Set;
8
9 /**
10 * 数据集封装
11 * @author Administrator
12 *
13 */
14 public class DataTable {
15
16 public String[] column;//列字段
17 public String[][] row; //行值
18 public int rowCount = 0;//行数
19 public int colCoun = 0;//列数
20
21
22 public DataTable() {
23 super();
24 }
25
26 public DataTable(String[] column, String[][] row, int rowCount, int colCoun) {
27 super();
28 this.column = column;
29 this.row = row;
30 this.rowCount = rowCount;
31 this.colCoun = colCoun;
32 }
33
34
35 public void setDataTable(ArrayList<HashMap<String, String>> list) {
36 rowCount = list.size();
37 colCoun = list.get(0).size();
38 column = new String[colCoun];
39 row = new String[rowCount][colCoun];
40 for (int i = 0; i < rowCount; i++) {
41 Set<Map.Entry<String, String>> set = list.get(i).entrySet();
42 int j = 0;
43 for (Iterator<Map.Entry<String, String>> it = set.iterator(); it
44 .hasNext();) {
45 Map.Entry<String, String> entry = (Map.Entry<String, String>) it
46 .next();
47 row[i][j] = entry.getValue();
48 if (i == rowCount - 1) {
49 column[j] = entry.getKey();
50 }
51 j++;
52 }
53 }
54 }
55
56 public String[] getColumn() {
57 return column;
58 }
59
60 public void setColumn(String[] column) {
61 this.column = column;
62 }
63
64 public String[][] getRow() {
65 return row;
66 }
67
68 public void setRow(String[][] row) {
69 this.row = row;
70 }
71
72 public int getRowCount() {
73 return rowCount;
74 }
75
76 public void setRowCount(int rowCount) {
77 this.rowCount = rowCount;
78 }
79
80 public int getColCoun() {
81 return colCoun;
82 }
83
84 public void setColCoun(int colCoun) {
85 this.colCoun = colCoun;
86 }
87
88
89
90 }
1 package com.bussiness.test;
2
3 import java.sql.SQLException;
4 import java.sql.Types;
5
6 import com.dao.db.DBManager;
7 import com.dao.db.DataTable;
8
9 public class TestBusIness{
10
11 static String searchSql = "select * from score";
12 static String insertSql = "insert into score(name, age, score)values(?,?,?)";
13 static String deleteSql = "delete from score where id = ?";
14 static String updateSql = "update score set name = ? where id = ?";
15
16 public static void main(String[] args) {
17 intsertData();
18 searchData();
19 }
20
21 private static void intsertData()
22 {
23 DBManager dm = new DBManager();
24 String[] coulmn = new String[]{"wyf2", "23", "89.5"};
25 int[] type = new int[]{Types.CHAR, Types.INTEGER, Types.DOUBLE};
26
27 try {
28 boolean flag = dm.updateOrAdd(coulmn, type, insertSql);
29 if(flag)
30 System.out.println("插入成功");
31 } catch (SQLException e) {
32 e.printStackTrace();
33 }
34 }
35 private static void searchData()
36 {
37 DBManager dm = new DBManager();
38 String[] coulmn = null;
39 int[] type = null;
40
41 try {
42 DataTable dt = dm.getResultData(coulmn, type, searchSql);
43 if(dt != null && dt.getRowCount()> 0){
44 for(int i = 0; i<dt.getRowCount(); i++)
45 {
46 for(int j = 0; j<dt.getColCoun(); j++)
47 System.out.printf(dt.getRow()[i][j]+"\t");
48 System.out.println();
49 }
50 }
51 else
52 System.out.println("查询失败");
53 } catch (SQLException e) {
54 e.printStackTrace();
55 }
56 }
57 }