package com.jiuqi.njt.data; import java.util.ArrayList; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.jiuqi.mobile.nigo.comeclose.bean.base.KindsOfCarBean; import com.jiuqi.njt.model.PeriodData; import com.jiuqi.njt.util.Constants; /** * 操作Sqllite3数据库的接口程序 */ public class Optdb_interfce { // 数据库对象 private static SQLiteDatabase db = null; // 数据库游标 private Cursor cursor = null; // 数据库名 private static String DATABASE_NJTFORM = "njt_form.db"; public static String TABLE_RECORDS = "T_DATA_RECORDS"; public static String TABLE_PERIODS = "T_PERIODS"; public static String TABLE_SOLUTIONS = "T_SOLUTIONS"; public static String TABLE_NJLEIBIE = "T_NJ_LEIBIE"; // 业务方案时期列表 private static final String T_PERIODS = "CREATE TABLE T_PERIODS(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,USERNAME VARCHAR(50),PERIOD VARCHAR(50),SOLUTIONID VARCHAR(30)," + "ADD_TIME VARCHAR(30)"; /** * 数据库表字段信息 */ private static final String T_SOLUTIONS = "CREATE TABLE T_SOLUTIONS(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,USERNAME VARCHAR(50),NAME VARCHAR(50),SOLUTIONID VARCHAR(30), ADD_TIME VARCHAR(30),STARTTIME VARCHAR(30), ENDTIME VARCHAR(30),CURRENTYEAR VARCHAR(30)"; // 上传数据的表 private static final String T_DATA_RECORDS = "CREATE TABLE T_DATA_RECORDS(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,USERNAME VARCHAR(50),PERIOD VARCHAR(50),SOLUTIONID VARCHAR(30)," + "AUDITOR VARCHAR(30),ADD_TIME VARCHAR(30),STATE INT,ZBNAME VARCHAR(50),ZBVALUE VARCHAR(500)"; // 扩展字段值 private static final String extendValue = "REMARK1 VARCHAR(500),REMARK2 VARCHAR(500)," + "REMARK3 VARCHAR(500),REMARK4 VARCHAR(500),REMARK5 VARCHAR(500)"; //农机类别 private static final String T_NJ_LEIBIE = "CREATE TABLE IF NOT EXISTS T_NJ_LEIBIE(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,NAME VARCHAR(50),CODE LONG(50),PCODE LONG(50)," + "ADDTIMESTR VARCHAR(30),LEVEL VARCHAR(30),BIGCLASSCODE VARCHAR(30),BIGCLASSNAME VARCHAR(50),SMALLCLASSNAME VARCHAR(50),SMALLCLASSCODE VARCHAR(30),ITEMNAME VARCHAR(50),ITEMCODE VARCHAR(30),REMARK3 VARCHAR(50),REMARK4 VARCHAR(50),REMARK5 VARCHAR(50))"; /** * 创建或打开数据库 */ @SuppressWarnings("static-access") public Optdb_interfce(Context context) { try { this.db = context.openOrCreateDatabase(DATABASE_NJTFORM, context.MODE_APPEND, null); } catch (Exception e) { e.printStackTrace(); } } /** * 判断数据库是否已打开 * * @return */ public boolean isOpen() { boolean flag = false; try { if (db != null && db.isOpen()) { // 如果游标未关闭,则关闭游标 if (cursor != null && !cursor.isClosed()) { cursor.close(); } flag = true; } } catch (Exception e) { e.printStackTrace(); } return flag; } // 创建数据库表 public void createTable() { try { db.execSQL(T_SOLUTIONS+ "," + extendValue + ")"); db.execSQL(T_DATA_RECORDS + "," + extendValue + ")"); db.execSQL(T_PERIODS + "," + extendValue + ")"); db.execSQL(T_NJ_LEIBIE ); } catch (SQLException e) { e.printStackTrace(); System.out.println("表已存在!"); } } // 创建数据库表 public void createNJTable() { try { db.execSQL(T_NJ_LEIBIE ); } catch (SQLException e) { e.printStackTrace(); System.out.println("表已存在!"); } } // 插入数据 public void InsertToDb(String tableName, ArrayList<KindsOfCarBean> list) { if(list==null) return ; if(TABLE_NJLEIBIE.equals(tableName)){ for (Object object : list) { KindsOfCarBean bean = (KindsOfCarBean) object; try { db.execSQL( "INSERT INTO T_NJ_LEIBIE(NAME,CODE,PCODE,ADDTIMESTR,LEVEL,BIGCLASSCODE,BIGCLASSNAME,SMALLCLASSNAME,SMALLCLASSCODE,ITEMNAME,ITEMCODE) " + "VALUES (?,?,?,?,?,?,?,?,?,?,?)", new Object[] { bean.getName(),bean.getCode(),bean.getpCode(), bean.getCreateDateStr(),bean.getLevel()+"", bean.getBigClassCode(), bean.getBigClassName(),bean.getSmallClassName(),bean.getSmallClassCode(),bean.getItemName(),bean.getItemCode() }); }catch(Exception e){ Log.i("database","插入业务方案失败"); e.printStackTrace(); } } } } //查询所有农机大类 public ArrayList<KindsOfCarBean> getKindsOfCarBeanInfo(String level) { ArrayList<KindsOfCarBean> list = new ArrayList<KindsOfCarBean>(); String sql = "SELECT * FROM T_NJ_LEIBIE WHERE LEVEL = ?"; try { cursor = db.rawQuery(sql, new String[]{level}); while (cursor.moveToNext()) { KindsOfCarBean kindsOfCarBean = new KindsOfCarBean(); kindsOfCarBean.setName(cursor.getString(cursor.getColumnIndex("NAME"))); kindsOfCarBean.setCode(cursor.getLong(cursor.getColumnIndex("CODE"))); kindsOfCarBean.setpCode(cursor.getLong(cursor.getColumnIndex("PCODE"))); kindsOfCarBean.setBigClassCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("BIGCLASSCODE")))); kindsOfCarBean.setBigClassName(cursor.getString(cursor.getColumnIndex("BIGCLASSNAME"))); kindsOfCarBean.setCreateDateStr(cursor.getString(cursor.getColumnIndex("ADDTIMESTR"))); kindsOfCarBean.setSmallClassCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("SMALLCLASSCODE")))); kindsOfCarBean.setSmallClassName(cursor.getString(cursor.getColumnIndex("SMALLCLASSNAME"))); kindsOfCarBean.setItemCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("ITEMCODE")))); kindsOfCarBean.setItemName(cursor.getString(cursor.getColumnIndex("ITEMNAME"))); list.add(kindsOfCarBean); } } catch (Exception e) { Log.i("database","查询业务方案记录失败"); e.printStackTrace(); } return list; } //根据农机大类名称查询出它下面的所有小类 public ArrayList<KindsOfCarBean> getSmallKindsOfCarBeanInfo(String level,String name) { ArrayList<KindsOfCarBean> list = new ArrayList<KindsOfCarBean>(); String sql = "SELECT * FROM T_NJ_LEIBIE WHERE LEVEL = ? and BIGCLASSNAME = ?"; try { cursor = db.rawQuery(sql, new String[]{level,name}); while (cursor.moveToNext()) { KindsOfCarBean kindsOfCarBean = new KindsOfCarBean(); kindsOfCarBean.setName(cursor.getString(cursor.getColumnIndex("NAME"))); kindsOfCarBean.setCode(cursor.getLong(cursor.getColumnIndex("CODE"))); kindsOfCarBean.setpCode(cursor.getLong(cursor.getColumnIndex("PCODE"))); kindsOfCarBean.setBigClassCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("BIGCLASSCODE")))); kindsOfCarBean.setBigClassName(cursor.getString(cursor.getColumnIndex("BIGCLASSNAME"))); kindsOfCarBean.setCreateDateStr(cursor.getString(cursor.getColumnIndex("ADDTIMESTR"))); kindsOfCarBean.setSmallClassCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("SMALLCLASSCODE")))); kindsOfCarBean.setSmallClassName(cursor.getString(cursor.getColumnIndex("SMALLCLASSNAME"))); kindsOfCarBean.setItemCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("ITEMCODE")))); kindsOfCarBean.setItemName(cursor.getString(cursor.getColumnIndex("ITEMNAME"))); list.add(kindsOfCarBean); } } catch (Exception e) { Log.i("database","查询业务方案记录失败"); e.printStackTrace(); } return list; } //根据农机小类名称查询出它下面的所有农机品目 public ArrayList<KindsOfCarBean> getSmallKindsOfCarBeanPMInfo(String level,String smallClassName) { ArrayList<KindsOfCarBean> list = new ArrayList<KindsOfCarBean>(); String sql = "SELECT * FROM T_NJ_LEIBIE WHERE LEVEL = ? and SMALLCLASSNAME = ?"; try { cursor = db.rawQuery(sql, new String[]{level,smallClassName}); while (cursor.moveToNext()) { KindsOfCarBean kindsOfCarBean = new KindsOfCarBean(); // kindsOfCarBean.setName(cursor.getString(cursor.getColumnIndex("NAME"))); // kindsOfCarBean.setCode(cursor.getLong(cursor.getColumnIndex("CODE"))); // kindsOfCarBean.setCreateDateStr(cursor.getString(cursor.getColumnIndex("ADDTIMESTR"))); // kindsOfCarBean.setBigClassName(cursor.getString(cursor.getColumnIndex("REMARK3"))); // kindsOfCarBean.setSmallClassName(cursor.getString(cursor.getColumnIndex("REMARK4"))); kindsOfCarBean.setName(cursor.getString(cursor.getColumnIndex("NAME"))); kindsOfCarBean.setCode(cursor.getLong(cursor.getColumnIndex("CODE"))); kindsOfCarBean.setpCode(cursor.getLong(cursor.getColumnIndex("PCODE"))); kindsOfCarBean.setBigClassCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("BIGCLASSCODE")))); kindsOfCarBean.setBigClassName(cursor.getString(cursor.getColumnIndex("BIGCLASSNAME"))); kindsOfCarBean.setCreateDateStr(cursor.getString(cursor.getColumnIndex("ADDTIMESTR"))); kindsOfCarBean.setSmallClassCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("SMALLCLASSCODE")))); kindsOfCarBean.setSmallClassName(cursor.getString(cursor.getColumnIndex("SMALLCLASSNAME"))); kindsOfCarBean.setItemCode(Integer.parseInt(cursor.getString(cursor.getColumnIndex("ITEMCODE")))); kindsOfCarBean.setItemName(cursor.getString(cursor.getColumnIndex("ITEMNAME"))); list.add(kindsOfCarBean); } } catch (Exception e) { Log.i("database","查询业务方案记录失败"); e.printStackTrace(); } return list; } public void deleteRecord(String solutionid,String period,String username) { String sql = "DELETE FROM T_DATA_RECORDS WHERE USERNAME = '" + username + "' AND SOLUTIONID = '"+solutionid+"' AND PERIOD = '"+period+"'"; try { db.execSQL(sql); } catch (Exception e) { Log.i("database","删除record记录失败"); e.printStackTrace(); } } public void deleteSolution(String solutionid,String username) { String sql = "DELETE FROM T_SOLUTIONS WHERE USERNAME = '" + username + "' AND SOLUTIONID = '"+solutionid+"'"; try{ db.execSQL(sql); } catch (Exception e) { Log.i("database","删除业务方案记录失败"); e.printStackTrace(); } } public void deleteSolutionAll() { String sql = "DELETE FROM T_SOLUTIONS"; try{ db.execSQL(sql); } catch (Exception e) { Log.i("database","删除所有业务方案记录失败"); e.printStackTrace(); } } public void deletePeriodRecord(String solutionid,String username) { String sql = "DELETE FROM T_PERIODS WHERE USERNAME = '" + username + "' AND SOLUTIONID = '"+solutionid+"'"; try{ db.execSQL(sql); } catch (Exception e) { Log.i("database","删除时期记录失败"); e.printStackTrace(); } } /** * 如果有某个时期的数据则返回true * @param solutionid * @param period * @param username * @return */ public boolean isHasRecord(String solutionid,String period,String username){ boolean isHasRecord = false; String sql = "SELECT * FROM T_DATA_RECORDS WHERE USERNAME = ? AND SOLUTIONID = ? AND PERIOD = ?"; try { cursor = db.rawQuery(sql, new String[]{username,solutionid,period}); isHasRecord = cursor.moveToNext(); }catch(Exception e){ } return isHasRecord; } public ArrayList<Object> getNJLeiBie(String solutionid,String level) { ArrayList<Object> list = new ArrayList<Object>(); String sql = "SELECT * FROM T_NJ_LEIBIE WHERE LEVEl = ? AND SOLUTIONID = ?"; try { cursor = db.rawQuery(sql, new String[]{solutionid,level}); while (cursor.moveToNext()) { PeriodData record = new PeriodData(); record.setUsername(cursor.getString(cursor.getColumnIndex("USERNAME"))); record.setPeriod(cursor.getString(cursor.getColumnIndex("PERIOD"))); record.setSolutionId(cursor.getString(cursor.getColumnIndex("SOLUTIONID"))); record.setAddtime(cursor.getString(cursor.getColumnIndex("ADD_TIME"))); record.setRemark1(cursor.getString(cursor.getColumnIndex("REMARK1"))); record.setRemark2(cursor.getString(cursor.getColumnIndex("REMARK2"))); record.setRemark3(cursor.getString(cursor.getColumnIndex("REMARK3"))); record.setRemark4(cursor.getString(cursor.getColumnIndex("REMARK4"))); record.setRemark5(cursor.getString(cursor.getColumnIndex("REMARK5"))); record.setId(cursor.getString(cursor.getColumnIndex("ID"))); list.add(record); } } catch (Exception e) { Log.i("database","查询时期表记录失败"); e.printStackTrace(); } return list; } /** * 关闭Sqllite3数据库 */ public void close_SqlDb() { System.out.println("************关闭数据库连接************"); if (cursor != null) { cursor.close(); } if (db != null) { db.close(); } } }