Derby学习及前端开发工具使用心得。
有好长一段时间没有摸新技术了(对自己而言是新的,因为以前没接触过),最近公司的一个项目需要使用Derby数据库,所以,花了点时间学习其简单使用。
说来惭愧,工作这么长时间了,使用过Oracle、DB2等“大型”数据库,然而,学习Derby这样一个“小型”数据库,竟然遇到了好多的问题:
1、Derby创建数据库后,其数据库文件放在哪个目录(配置了Derby的path和classpath)?刚开始不知道,后来上网搜到的结果是:“Derby会在当前你命令行下所在的目录下创建一个与数据库命一致的目录,其中存放了数据库的文件。”,但是遇到一个疑问:如果直接在bin目录下执行ij.bat,生成的数据库文件目录就在bin目录下,如果在cmd窗口中,执行命令ij,生成的数据库文件目录在lib目录下。这个疑问,还没搞明白。
2、用命令行窗口,执行Derby常用操作,觉得不方便,所以想找一个前端开发工具,一直觉得DbVisualizer和SQuirreL SQL Client这两个工具不错,支持现在常见的数据库,所以,尝试了一下,但是在连接数据库时,一直不成功(通过ij命令可以正常连接),网上搜了一大堆资料,都没能解决问题,最后,突然想到,是不是没有设置用户名和密码这两个参数,所以想设置参数后再试试,但是创建数据库时,没有设置用户名和密码,默认是什么呢?网上搜到的默认用户名和密码:app,app。最后连接成功。
3、在自己的应用中启动数据库和操作数据库。如果想把Derby集成到自己的应用中,并且随应用的启动而启动,而不是每次单独通过命令窗口执行启动命令。直接通过代码:
NetworkServerControl server = new NetworkServerControl();
server.start(null);
实现。
4、如果在Eclipse中调试基于Derby数据库的代码,需要引入环境变量classpath中设置的包,否则会出现如下错误:
Exception in thread "DRDAConnThread_3" java.lang.NoSuchMethodError: org.apache.derby.iapi.jdbc.EnginePreparedStatement.getEmbedParameterSetMetaData()Lorg/apache/derby/iapi/jdbc/EngineParameterMetaData;
at org.apache.derby.impl.drda.DRDAStatement.getParameterMetaData(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.writeSQLDARD(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)