博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java操作MySQL应用实例
阅读量:4946 次
发布时间:2019-06-11

本文共 6181 字,大约阅读时间需要 20 分钟。

本案例树JDBC做了轻型封装,主要目的是方便用户查询数据库后得到的就是一张表对象 ,此表与数据库中的表有对应关系

1.定义接口类,为了方便以后扩展开发

package com.zhaochao.dba;import java.sql.Connection;public interface iConn {	Connection getConn() throws Exception;}

2.定义连接MySQL类,实现iConn接口

此类主要是为了获得MySQL连接
package com.zhaochao.dba;import java.sql.Connection;import java.sql.DriverManager;public class MySQLConn implements iConn {	private static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;	private static final String DBURL = "jdbc:mysql://localhost:3306/zhaochao" ;	private static final String DBUSER = "root" ;	private static final String DBPASS = "admin";	private Connection conn=null;	@Override	public Connection getConn() throws Exception {		// TODO Auto-generated method stub		try {			Class.forName(DBDRIVER);			this.conn=DriverManager.getConnection(DBURL, DBUSER, DBPASS);					} catch (Exception e) {			// TODO Auto-generated catch block			throw e;		}				return this.conn;	}}

3.定义表头类

此类与数据库的表头相对应,主要是获得数据库的表的信息

package com.zhaochao.dba;public class TableHead {//	数据库中表名	private String    tableName;//	表中列数量	private int       tableColumn;//	表中列名	private String [] tableColumnName;		public String getTableName() {		return tableName;	}	public void setTableName(String tableName) {		this.tableName = tableName;	}	public int getTableColumn() {		return tableColumn;	}	public void setTableColumn(int tableColumn) {		this.tableColumn = tableColumn;	}	public String getTableColumnName(int i) {		return tableColumnName[i];	}	public void setTableColumnName(String tableColumnName,int i) {		this.tableColumnName[i-1] = tableColumnName;	}	public TableHead(int count){		this.tableColumn=count;		this.tableColumnName=new String [count];	}}

4.定义表中字段类

此类与数据库中的一个字体相对应

package com.zhaochao.dba;public class TableContent {//	表字段内容	private String [] tableContent;		public TableContent(int Count){		this.tableContent=new String[Count];	}	public String getTableContent(int i) {		return tableContent[i];	}	public void setTableContent(String tableContent ,int i) {		this.tableContent[i-1] = tableContent;	}	}

5.定义表类

此类与数据库中的一张表相对应,主要有表头和字段组成

package com.zhaochao.dba;import java.util.ArrayList;import java.util.List;public class Table {//	表中列数量	private int coloumnCount;//	表头信息	private TableHead tablehead;//	表个字段	private List
content;// 向表中增加字段 public void addContent(TableContent content){ this.content.add(content); }// 表中字段大小 public int contentSize(){ return this.content.size(); } // 表列数 public int getColoumnCount() { return coloumnCount; } public void setColoumnCount(int coloumnCount) { this.coloumnCount = coloumnCount; } public TableHead getTablehead() { return tablehead; } public void setTablehead(TableHead tablehead) { this.tablehead = tablehead; } public List
getContent() { return content; } public void setContent(List
content) { this.content = content; } public Table(int Count){ this.coloumnCount=Count; this.content=new ArrayList
(); }// 得到表中第i个字段 public TableContent getTableContent(int i){ return this.content.get(i); }}

6.定义MySQL类

此类完成对数据库的具体操作

package com.zhaochao.dba;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ParameterMetaData;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;;public class MySQL {	private Connection conn;	private PreparedStatement ps;	private ResultSet         rs;	private ResultSetMetaData rsData;		public MySQL(iConn icon) throws Exception{		try {			this.conn=icon.getConn();		} catch (Exception e) {			// TODO Auto-generated catch block			throw e;		}	}	//	获取表	public Table ExecuteSQL(String sql,String [] paramters) throws SQLException{				this.ps=this.conn.prepareStatement(sql);		if(paramters!=null){			for(int i=1;i<=paramters.length;i++){				this.ps.setString(i, paramters[i-1]);			}		}		this.rs=this.ps.executeQuery();		TableHead tableHead=null;		Table     table=null;				this.rsData=this.rs.getMetaData();		int columnCount=this.rsData.getColumnCount();		table=new Table(columnCount);			tableHead=new TableHead(columnCount);		tableHead.setTableName(this.rsData.getTableName(1));				for(int i=1;i<=this.rsData.getColumnCount();i++){			tableHead.setTableColumnName(this.rsData.getColumnName(i), i);		}//		设置表头		table.setTablehead(tableHead);					while(this.rs.next()){			TableContent content=new TableContent(columnCount);				for(int i=1;i<=columnCount;i++){					content.setTableContent(this.rs.getString(i), i);				}//				加入字段				table.addContent(content);		}			return table;	}				private void close(){		if(conn!=null){			try {				conn.close();			} catch (SQLException e) {				// TODO: handle exception				e.printStackTrace();			}		}		if(ps!=null){			try {				ps.close();			} catch (SQLException e) {				// TODO: handle exception				e.printStackTrace();			}		}		if(rs!=null){			try {				rs.close();			} catch (SQLException e) {				// TODO: handle exception				e.printStackTrace();			}		}	}		}

7.测试

package com.zhaochao.dba;public class Main {	public static void main(String [] rags){		//		String sql="select id,username from user where id>? and id
select * from user;// +------+----------+------------+// | id | username | userpasswd |// +------+----------+------------+// | 1 | 赵超 | zhaochao |// | 2 | 赵云 | zhaoyun |// | 3 | 马超 | machao |// | 4 | 关羽 | guanyu |// | 5 | 张飞 | zhangfei |// | 6 | 黄忠 | huangzhong |// | 7 | 吕布 | lvbu |// | 8 | 刘备 | luibei |// +------+----------+------------+// 8 rows in set (0.00 sec)// 从id为 3 4 5 6 中第2个开始取3个 所以为 5 6 limit编号从0开始 iConn iconn=new MySQLConn(); MySQL mysql=null; Table table=null; try { mysql=new MySQL(iconn); table=mysql.ExecuteSQL(sql, paramters); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }// 输出表名 System.out.println(table.getTablehead().getTableName());// 输出表头 for(int i=0;i

8.结果

结果1

userid username userpasswd  1 赵超 zhaochao  2 赵云 zhaoyun  3 马超 machao  4 关羽 guanyu  5 张飞 zhangfei  6 黄忠 huangzhong  7 吕布 lvbu  8 刘备 luibei
结果2

userid username  5 张飞  6 黄忠

转载于:https://www.cnblogs.com/whzhaochao/p/5023485.html

你可能感兴趣的文章
getQueryString
查看>>
Servlet文件上传和下载的复习
查看>>
JavaScript笔记——正则表达式
查看>>
iOS PushMebaby
查看>>
网页消息类
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
BZOJ3687: 简单题(dp+bitset)
查看>>
Vim常用又容易忘的命令
查看>>
cf1132G. Greedy Subsequences(线段树)
查看>>
P1577 切绳子
查看>>
3117 高精度乘法
查看>>
安装 php-gd
查看>>
OO第二次总结
查看>>
mybatis-01-基本流程
查看>>
【BZOJ1064】[Noi2008]假面舞会 DFS树
查看>>
日志信息中总是打印行号可能导致系统缓慢
查看>>
MyBatis中别名的设置
查看>>
Collections.sort的两种用法
查看>>
CSS实现div的高度填满剩余空间
查看>>
Golang常用数据结构(对照python)
查看>>