`

j2me工具类:Database.java

    博客分类:
  • j2me
阅读更多


/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: WorthTech</p>
 *
 * @author bruce
 * @version 1.0
 */
import javax.microedition.rms.*;

//import java.io.*;
//import java.util.Hashtable;

//import com.mpay.io.SerializerInputStream;
//import com.mpay.io.SerializerOutputStream;
//import com.mpay.io.SerializationException;
//import com.mpay.util.commlib.info.MenuInfo;
//import com.mpay.util.commlib.ByteArray;
//import com.mpay.util.commlib.info.BillInfo;

//import com.mpay.util.commlib.TypeConvert;

public class Database {
	private RecordStore store;

	public static Database instance;

	public Database() {
	}

	public static Database getDatabase() {
		if (instance == null) {
			instance = new Database();
		}
		return instance;
	}

	public void open(String tableName) {
		try {
			this.store = RecordStore.openRecordStore(tableName, true);
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("打开数据库出错:" + ex.getMessage());
			try {
				store.closeRecordStore();
				store = null;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public int getNumRecords() {
		try {
			return this.store.getNumRecords();
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("未找到记录" + ex.getMessage());
			return 0;
		}
	}

	public void close() {
		try {
			this.store.closeRecordStore();
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("数据库尚未打开:" + ex.getMessage());
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("数据库关闭出错:" + ex.getMessage());
		}
	}

	public int addRecord(String content) {
		byte[] data = content.getBytes();
		try {
			return this.store.addRecord(data, 0, data.length);
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("数据库尚未打开:" + ex.getMessage());
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("写入数据出错:" + ex.getMessage());
		}
		return -1;
	}

	public int addRecord(byte[] data) {
		try {
			return this.store.addRecord(data, 0, data.length);
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("数据库尚未打开:" + ex.getMessage());
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("写入数据出错:" + ex.getMessage());
		}
		return -1;
	}

//	public int addRecord(Object obj) {
//		ByteArrayOutputStream baos = new ByteArrayOutputStream();
//		SerializerOutputStream out = null;
//		try {
//			out = new SerializerOutputStream(baos);
//			if (obj instanceof MessageInfo) {
//				((MessageInfo) obj).serialize(out);
//			} else if (obj instanceof MenuInfo) {
//				((MenuInfo) obj).serialize(out);
//			} else if (obj instanceof Constants) {
//				((Constants) obj).serialize(out);
//			} else if (obj instanceof BillInfo) {
//				((BillInfo) obj).serialize(out);
//			}
//			out.flush();
//			byte[] data = baos.toByteArray();
//			return this.addRecord(data);
//		} catch (SerializationException ex) {
//			ex.printStackTrace();
//			//System.out.println("序列化对象时异常:" + ex.getMessage());
//		} catch (IOException e) {
//			e.printStackTrace();
//			//System.out.println("序列化对象存储时异常:" + e.getMessage());
//		} finally {
//			try {
//				if (out != null) {
//					out.close();
//				}
//				if (baos != null) {
//					baos.close();
//				}
//			} catch (IOException ex1) {
//				ex1.printStackTrace();
//			}
//		}
//		return -1;
//	}

	public byte[] getRecord(int recordId) {
		try {
			return this.store.getRecord(recordId);
		} catch (InvalidRecordIDException ex) {
			ex.printStackTrace();
			//System.out.println("不正确的记录ID索引" + ex.getMessage());
			return null;
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("数据库尚未打开:" + ex.getMessage());
			return null;
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("读取数据出错:" + ex.getMessage());
			return null;
		}
	}

//	public Object getMessageRecord(int recordId, Object obj) {
//		Object object = obj;
//		//        //System.out.println("recordId=" + recordId);
//		byte[] data = this.getRecord(recordId);
//		//        //System.out.println("data[]==" + TypeConvert.toHexString(data));
//
//		ByteArrayInputStream bais = new ByteArrayInputStream(data);
//		SerializerInputStream in = new SerializerInputStream(bais);
//		try {
//			if (obj instanceof MessageInfo) {
//				ByteArray array = new ByteArray();
//				array.add(data);
//				object = new MessageInfo(data);
//				((MessageInfo) object).deserialize(in);
//			} else if (obj instanceof MenuInfo) {
//				((MenuInfo) object).deserialize(in);
//			} else if (obj instanceof Constants) {
//				((Constants) object).deserialize(in);
//			} else if (obj instanceof BillInfo) {
//				((BillInfo) object).deserialize(in);
//			}
//		} catch (SerializationException ex) {
//			ex.printStackTrace();
//			//System.out.println("反序列化对象时异常:" + ex.getMessage());
//		} finally {
//			try {
//				if (in != null) {
//					in.close();
//				}
//				if (bais != null) {
//					bais.close();
//				}
//			} catch (IOException ie) {
//				ie.printStackTrace();
//			}
//		}
//		return object;
//	}

	public void updateRecord(int recordId, byte[] newdata) {
		try {
			this.store.setRecord(recordId, newdata, 0, newdata.length);
		} catch (InvalidRecordIDException ex) {
			ex.printStackTrace();
			//System.out.println("不正确的记录ID索引" + ex.getMessage());
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("数据库尚未打开:" + ex.getMessage());
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("读取数据出错:" + ex.getMessage());
		}
	}

	public void updateRecord(int recordId, String newdata) {
		byte[] data = newdata.getBytes();
		try {
			this.store.setRecord(recordId, data, 0, data.length);
		} catch (InvalidRecordIDException ex) {
			ex.printStackTrace();
			//System.out.println("不正确的记录ID索引" + ex.getMessage());
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
			//System.out.println("数据库尚未打开:" + ex.getMessage());
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("读取数据出错:" + ex.getMessage());
		}
	}

//	public void updateRecord(int recordId, Object obj) {
//		ByteArrayOutputStream baos = new ByteArrayOutputStream();
//		SerializerOutputStream out = null;
//		try {
//			out = new SerializerOutputStream(baos);
//			if (obj instanceof MessageInfo) {
//				((MessageInfo) obj).serialize(out);
//			} else if (obj instanceof MenuInfo) {
//				((MenuInfo) obj).serialize(out);
//			} else if (obj instanceof Constants) {
//				((Constants) obj).serialize(out);
//			} else if (obj instanceof BillInfo) {
//				((BillInfo) obj).serialize(out);
//			}
//			out.flush();
//			byte[] data = baos.toByteArray();
//			this.updateRecord(recordId, data);
//		} catch (SerializationException ex) {
//			ex.printStackTrace();
//			//System.out.println("序列化对象时异常:" + ex.getMessage());
//		} catch (IOException ie) {
//			ie.printStackTrace();
//			//System.out.println("序列化对象存储时异常:" + ie.getMessage());
//		} finally {
//			try {
//				if (out != null) {
//					out.close();
//				}
//				if (baos != null) {
//					baos.close();
//				}
//			} catch (IOException ex1) {
//				ex1.printStackTrace();
//			}
//		}
//	}

	public void deleteRecord(int recordId) {
		try {
			this.store.deleteRecord(recordId);
		} catch (InvalidRecordIDException ex) {
			ex.printStackTrace();
		} catch (RecordStoreNotOpenException ex) {
			ex.printStackTrace();
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
		}
	}

	public void clearTable(String tableName) {
		try {
			Thread.currentThread().sleep(1000);
			this.store.deleteRecordStore(tableName);
		} catch (InterruptedException ie) {
			ie.printStackTrace();
		} catch (RecordStoreException ex) {
			ex.printStackTrace();
			//System.out.println("删除数据库出错:" + ex.getMessage());
			try {
				Thread.currentThread().sleep(1000);
				this.store.deleteRecordStore(tableName);
			} catch (InterruptedException ie) {
				ie.printStackTrace();
			} catch (RecordStoreException rs) {
				rs.printStackTrace();
			}
		}
	}

}

分享到:
评论

相关推荐

    java软件开发模拟题

    15. **Java工具链中的java.exe** - **选项分析** - A. Java文档生成器:javadoc命令。 - B. Java解释器:java命令,用于运行Java应用程序。 - C. Java编译器:javac命令。 - D. Java类分解器:没有此类工具。...

    Java2 类库

    4. **多线程**:Java 2引入了更强大的多线程支持,`java.lang.Thread`和`java.util.concurrent`包提供了创建、管理和同步线程的工具。 5. **网络编程**:`java.net`包包含了处理网络连接和协议的类,使得Java程序能...

    java期末复习试题.pdf

    15. File类:File类属于Java.io包,用于处理文件和目录,它是字节流类,选项B正确。 此外,试题中还涉及了Java的一些基本概念: 1. 标识符:Java的标识符可以由字母、数字和下划线组成,且不能以数字开头。 2. ...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx(446页那个)

    3. **Java ME (J2ME)**:Java Micro Edition,适用于移动设备和嵌入式系统的开发。 **Java开发工具** 初学者通常从简单的文本编辑器(如记事本)开始,然后逐渐过渡到高级的集成开发环境(IDE),如Eclipse、...

    java程序员入门之路

    4. **java.com.cn**(&lt;http://www.java.com.cn/&gt;):官方站点,提供最新的Java资讯和技术支持。 5. **IBM DeveloperWorks**(&lt;http://www-900.ibm.com/developerWorks/cn/java/index.shtml&gt;):IBM提供的开发者资源...

    Java编程指南.ppt

    import java.util.Date; public class Demo1 { public static void main(String[] args) { System.out.print("你好,今天是 "); System.out.println(new Date()); } } ``` 5. Java程序基本结构: - package...

    Java体系结构介绍

    - **JDK**:Java Development Kit,包含Java编译器(javac.exe)、解释器(java.exe)、文档生成器(javadoc.exe)和调试器(jdb.exe)等工具。 - **IDE**:集成开发环境,如JBuilder、Eclipse等,提供了更高效的开发体验。 ...

    java开发工程师模拟题1.0.doc

    主要涵盖了Java的基础知识,包括类与对象、访问修饰符、Java的历史、Applet、数据类型、接口、JDBC、Eclipse、Swing、布局管理器、Java虚拟机(JVM)特性、J2ME、File类、JDK工具、数据类型转换以及Java的特性等。...

    java精品文章

    5. **JDBC (Java Database Connectivity)**:允许Java程序连接数据库的标准API。 6. **JavaMail**:用于发送和接收电子邮件的Java API。 #### 三、Java的开发工具和资源 1. **Eclipse** 和 **IntelliJ IDEA**:两...

    Java程序设计课件

    7. **第7章 Java数据库编程**: 数据库连接和操作是Java开发中的重要部分,这一章可能会讲解如何使用JDBC(Java Database Connectivity)进行数据库操作,包括连接数据库、执行SQL语句、处理结果集等。 8. **第8章 ...

    java成长之路

    - **JDBC(Java Database Connectivity)**:提供Java程序访问数据库的接口,是数据操作的重要工具。 - **JavaMail**:用于发送和接收电子邮件的API,增强了应用的交互性。 #### 学习资源与实践建议 对于初学者,...

    JAVA程序员笔试题

    5. **编码转换**:`java.nio.charset`包提供编码转换工具,例如`CharsetEncoder`和`CharsetDecoder`。 6. **访问数据库**:Java使用JDBC(Java Database Connectivity)访问数据库,`Statement`用于执行静态SQL,而...

    java复习试题[参考].pdf

    4. **JDK工具**:Java Development Kit (JDK) 包含了开发和运行Java程序所需的工具,其中`javadoc.exe`用于生成API文档,`javac.exe`用于编译Java源代码,`java.exe`用于运行Java程序,`javap.exe`用于反汇编编译后...

    BlackBerry J2ME 编程指南

    - **java.lang**:提供核心运行时类,但与J2SE相比有所简化。 - **java.io**:提供基本的输入输出支持,但功能相对有限。 - **java.util**:提供基本的数据结构支持,如ArrayList等。 ##### 1.2 MIDP API - **UI...

    Java新手入门的30个基本概念.doc

    20. **JDBC(Java Database Connectivity)**:Java数据库连接,用于与各种数据库进行交互的API。 21. **反射(Reflection)**:Java反射机制允许在运行时动态访问类的信息,如类名、方法、属性等。 22. **集合...

    J2SE,J2EE学习笔记

    Java技术体系主要包括三个主要部分:J2SE(Java 2 Platform, Standard Edition)、J2EE(Java 2 Platform, Enterprise Edition)和J2ME(Java 2 Platform, Micro Edition)。J2SE是Java平台的基础,提供了用于开发和...

    JAVA程序员之路-----看专业程序员的成长之路

    4. **JDBC(Java Database Connectivity)**:通过JDBC,Java程序能够连接并操作各种关系型数据库。熟练运用JDBC是进行数据库交互的关键技能之一。 5. **JavaMail**:用于发送电子邮件的API,支持多种邮件协议,如...

    2022年Java新手入门的30个基本概念Java教程.docx

    24. **JDBC(Java Database Connectivity)**:Java与数据库交互的API,允许连接和操作各种数据库。 25. **JNDI(Java Naming and Directory Interface)**:用于查找和管理分布式环境中的资源。 26. **RMI...

Global site tag (gtag.js) - Google Analytics