package com.jdbc.dataBase;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import com.jdbc.JdbcBasicPro;
import com.jdbc.JdbcDataUtil;
/**
* @ClassName: JdbcBasicImpl
* @Description: 数据库的实现类,继承接口JdbcBasic
* @author
* @date
*/
public class JdbcBasicImpl{
/**
* @Title: createTable
* @Description: 建表的实现类
* @return void 返回类型
* @throws
*/
public void createTable(String tableName,Vector<String> tableHead,boolean flag) {
String strTemp = "";
if(!JavaDataBaseUtil.isTable(tableName) || flag){
List<String> list = new ArrayList<String>();
String tablePath = JdbcDataUtil.dataPathCVS + tableName+".csv";
if (tableHead.size()==0) {
System.out.println("error : 表头发生错误:JdbcBasicImpl.createTable(String tableName,Vector<String> tableHead)");
return;
}
for (int i = 0; i < tableHead.size(); i++) {
if (i==0) {
strTemp = JavaDataBaseUtil.getIdentity(tableHead.elementAt(0));
}else {
strTemp += (","+JavaDataBaseUtil.getIdentity(tableHead.elementAt(i)));
}
}
list.add(strTemp);
JavaDataBaseUtil.getDataWrite(tablePath,list);
}else{
System.out.println("error : 创建表发生错误,错误原因:已存在此表单【"+tableName+"】【JdbcBasicImpl.createTable(String tableName,Vector<String> tableHead)】");
return;
}
}
/**
* @Title: insertTable
* @Description: 数据库的插入的操作
* @param @param tableName
* @param @param tableHeadJ 参数说明
* @return void 返回类型
* @throws
*/
public void insertTable(String tableName, Vector<String> tableData) {
if(JavaDataBaseUtil.isTable(tableName)){
List<String> list = new ArrayList<String>();
String tablePath = JdbcDataUtil.dataPathCVS + tableName+".csv";
String identityKeyPath = JdbcDataUtil.identityPath;
//读取书库中的数据
Vector<String> vecTemp = JavaDataBaseUtil.getDataRead(tablePath);
Vector<String> identity = JavaDataBaseUtil.getDataRead(identityKeyPath);
if(vecTemp.size() == 0){
System.out.println("error : 插入的数据无表头:JdbcBasicImpl.insertTable(String tableName, Vector<String> tableContent)");
return;
}else {
boolean flag = false;
String strTemp = "";
int index = tableData.size();
int headLength = vecTemp.get(0).split(",").length;
for(String iden : identity){
String[] str = iden.split(",");
if(tableName.equals(str[0])){
index = tableData.size()+1;
flag = true;
}
}
if (headLength != index) {
System.out.println("error : 插入数据与表头不符:JdbcBasicImpl.insertTable(String tableName, Vector<String> tableContent)");
return;
}else {
//存在自增
if(flag){
int conter = vecTemp.size();
String num = "0";
if(conter > 1){
num = vecTemp.get(conter-1).split(",")[0];
}
strTemp = ""+(Integer.parseInt(num)+1)+"";
for (int i = 0; i < tableData.size(); i++) {
strTemp += (","+tableData.elementAt(i));
}
}else{
for (int i = 0; i < headLength; i++) {
if (i==0) {
strTemp = tableData.elementAt(0);
}else {
strTemp += (","+tableData.elementAt(i));
}
}
}
list.add(strTemp);
JavaDataBaseUtil.getDataWrite(tablePath, list);
}
}
}else{
System.out.println("error : 插入出错,不存在此表:【JdbcBasicImpl.insertTable(String tableName, Vector<String> tableData)】");
return;
}
}
/**
* @Title: selectAllTable
* @Description: 查询所有的数据
* @param @param tableName 参数说明
* @return void 返回类型
* @throws
*/
public List<Object[]> selectAllTable(String tableName,String filed){
if(JavaDataBaseUtil.isTable(tableName)){
List<Object[]> list = new ArrayList<Object[]>();
Vector<String> result = selectAllResult(tableName);
if(filed != null){
selectFiledTable(list, result,filed);
return list;
}
for(int i=1;i<result.size();i++){
String data = result.get(i);
String[] query = data.split(",");
Object[] obj = new Object[query.length];
for(int j=0;j<query.length;j++){
obj[j] = query[j];
}
list.add(obj);
}
return list;
}else{
System.out.println("error : 查询出错,不存在此表:【JdbcBasicImpl.selectAllTable(String tableName,String filed)】");
return null;
}
}
/**
* @Title: selectFiledTable
* @Description: 查询所有,并指定返回的字段数据
* @param @param list
* @param @param result
* @param @param filed
* @param @return 参数说明
* @return List<Object[]> 返回类型
* @throws
*/
public static List<Object[]> selectFiledTable(List<Object[]> list,Vector<String> result,String filed){
String[] str = filed.split(",");
String[] res = result.get(0).split(",");
List<Integer> index = new ArrayList<Integer>();
//字段匹配,不区分大小写
for(int i = 0; i<str.length; i++){
for(int j = 0 ;j < res.length; j++){
if(str[i].toLowerCase().equals(res[j].toLowerCase())){
index.add(j);
}
}
}
//根据下标获取数据
for(int i=1 ; i<result.size() ; i++){
int conter = 0;
String data = result.get(i);
String[] query = data.split(",");
Object[] obj = new Object[str.length];
for(int j=0;j<query.length;j++){
if(index.contains(j)){
obj[conter] = query[j];
conter++;
}
}
list.add(obj);
}
return list;
}
/**
* @Title: selectOneOpreTable
* @Description: where的条件查询,根据运算符判断,得到数据
* @param @param tableName
* @param @param dataList
* @param @param oper
* @param @return 参数说明
* @return List<Object[]> 返回类型
* @throws
*/
public List<Object[]> selectOneOpreTable(String tableName,List<String> dataList,List<String> oper,List<String> listAll){
if(JavaDataBaseUtil.isTable(tableName)){
List<Object[]> list = new ArrayList<Object[]>();
Map<String, Object[]> map = new HashMap<String,Object[]>();
List<Object[]> list1 = new ArrayList<Object[]>();
List<Object[]> list2 = new ArrayList<Object[]>();
Vector<String> result = selectAllResult(tableName);
String fileds = result.get(0);
if(oper != null){
String operator = getOper(result, dataList.get(0));
String operator1 = getOper(result, dataList.get(1));
if(operator != null && operator1 != null){
if(JdbcBasicPro.getOperator().contains(operator) && JdbcBasicPro.getOperator().contains(operator1)){
Map<String, Object[]> mapValue1 = null;
Map<String, Object[]> mapValue2 = null;
if(listAll.size() != 0){
mapValue1 = JdbcBasicPro.getDataOperator(operator, result , dataList.get(0));
mapValue2 = JdbcBasicPro.getDataOperator(operator1, result , dataList.get(1));
sepDataSelectTable(list1, mapValue1, listAll.get(0), fileds);
sepDataSelectTable(list2, mapValue2, listAll.get(0), fileds);
}else{
mapValue1 = JdbcBasicPro.getDataOperator(operator, result , dataList.get(0));
mapValue2 = JdbcBasicPro.getDataOperator(operator1, result , dataList.get(1));
}
if(oper.contains(JdbcBasicPro.and.toString())){
for(Map.Entry<String, Object[]> entry : mapValue1.entrySet()){
if(mapValue2.containsKey(entry.getKey())){
//判断value的值是否相同
Object[] isObj = entry.getValue();
Object[] obj = mapValue2.get(entry.getKey());
boolean flag = true;
for(int i=0;i<obj.length;i++){
if(!isObj[i].equals(obj[i])){
flag =false;
}
}
if(flag){
list.add(entry.getValue());
}
}
}
}else{
map.putAll(mapValue1);
map.putAll(mapValue2);
for(Map.Entry<String, Object[]> entry : map.entrySet()){
list
没有合适的资源?快使用搜索试试~ 我知道了~
java大作业:java实现数据库的底层实现
共39个文件
java:17个
class:17个
csv:2个
4星 · 超过85%的资源 需积分: 34 46 下载量 69 浏览量
2016-02-23
15:29:58
上传
评论 4
收藏 69KB ZIP 举报
温馨提示
使用java编写数据库的底层实现,并对其封装实现注解实体类进行创建表和简单的操作
资源推荐
资源详情
资源评论
收起资源包目录
JavaDataBase.zip (39个子文件)
JavaDataBaseDemo
bin
com
jdbc
ExecutJdbcDAO.class 7KB
JdbcBasicPro.class 9KB
dataBase
JavaDataBaseUtil.class 5KB
DBCuser.class 2KB
JdbcBasicImpl.class 18KB
JdbcDataUtil.class 970B
jdbcEntity
ExecuteEntityDao.class 7KB
query
Pattern.class 7KB
Update.class 2KB
Query.class 8KB
Criteria.class 10KB
anno
tableName.class 467B
filedName.class 553B
identityKey.class 557B
UtilInvokeValue.class 3KB
testJdbc
bean
loginInfo.class 1KB
jdbc.class 1KB
JDBCDATA
identityKey.csv 35B
loginInfo.csv 1KB
.settings
org.eclipse.jdt.core.prefs 598B
src
com
jdbc
ExecutJdbcDAO.java 9KB
dataBase
JavaDataBaseUtil.java 4KB
JdbcBasicImpl.java 19KB
DBCuser.java 2KB
JdbcDataUtil.java 414B
JdbcBasicPro.java 7KB
jdbcEntity
ExecuteEntityDao.java 5KB
query
Update.java 782B
Pattern.java 7KB
Query.java 6KB
Criteria.java 10KB
anno
tableName.java 373B
identityKey.java 582B
filedName.java 463B
UtilInvokeValue.java 2KB
testJdbc
jdbc.java 3KB
bean
loginInfo.java 1KB
.project 392B
.classpath 301B
共 39 条
- 1
资源评论
- 元辰辰辰辰辰辰2019-10-17用不了啊,浪费c币
- mocano2018-03-06这个功能就是个bug,明明没让我下载成功,也非要评论了才能再下,有毒
- java_nn2018-03-20学习数据库底层基本的CRUD实现,不错。
mhj_01
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功