`
jiasudu1649
  • 浏览: 732549 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hsqldb First JDBC Client Example

阅读更多
hsqldb自带的例子。看看就一切ok了,万事不求人啊。
There is a copy of Testdb.java in the directory src/org/hsqldb/sample of your HSQLDB distribution.

java 代码
 
  1.  1.  /* Copyright (c) 2001-2005, The HSQL Development Group  
  2.  2.  * All rights reserved.  
  3.  3.  *  
  4.  4.  * Redistribution and use in source and binary forms, with or without  
  5.  5.  * modification, are permitted provided that the following conditions are met:  
  6.  6.  *  
  7.  7.  * Redistributions of source code must retain the above copyright notice, this  
  8.  8.  * list of conditions and the following disclaimer.  
  9.  9.  *  
  10. 10.  * Redistributions in binary form must reproduce the above copyright notice,  
  11. 11.  * this list of conditions and the following disclaimer in the documentation  
  12. 12.  * and/or other materials provided with the distribution.  
  13. 13.  *  
  14. 14.  * Neither the name of the HSQL Development Group nor the names of its  
  15. 15.  * contributors may be used to endorse or promote products derived from this  
  16. 16.  * software without specific prior written permission.  
  17. 17.  *  
  18. 18.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"  
  19. 19.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE  
  20. 20.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  
  21. 21.  * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,  
  22. 22.  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  
  23. 23.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  
  24. 24.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  
  25. 25.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND  
  26. 26.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  
  27. 27.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  
  28. 28.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
  29. 29.  */   

ruby 代码
 
  1. package org.hsqldb.sample;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.ResultSet;  
  6. import java.sql.ResultSetMetaData;  
  7. import java.sql.SQLException;  
  8. import java.sql.Statement;  
  9.   
  10. /**  
  11.  * Title:        Testdb  
  12.  * Description:  simple hello world db example of a  
  13.  *               standalone persistent db application  
  14.  *  
  15.  *               every time it runs it adds four more rows to sample_table  
  16.  *               it does a query and prints the results to standard out  
  17.  *  
  18.  * Author: Karl Meissner karl@meissnersd.com  
  19.  */  
  20. public class Testdb {  
  21.   
  22.     Connection conn;                                                //our connnection to the db - presist for life of program  
  23.   
  24.     // we dont want this garbage collected until we are done  
  25.     public Testdb(String db_file_name_prefix) throws Exception {    // note more general exception  
  26.   
  27.         // Load the HSQL Database Engine JDBC driver  
  28.         // hsqldb.jar should be in the class path or made part of the current jar  
  29.         Class.forName("org.hsqldb.jdbcDriver");  
  30.   
  31.         // connect to the database.   This will load the db files and start the  
  32.         // database if it is not alread running.  
  33.         // db_file_name_prefix is used to open or create files that hold the state  
  34.         // of the db.  
  35.         // It can contain directory names relative to the  
  36.         // current working directory  
  37.         conn = DriverManager.getConnection("jdbc:hsqldb:"  
  38.                                            + db_file_name_prefix,    // filenames  
  39.                                            "sa",                     // username  
  40.                                            "");                      // password  
  41.     }  
  42.   
  43.     public void shutdown() throws SQLException {  
  44.   
  45.         Statement st = conn.createStatement();  
  46.   
  47.         // db writes out to files and performs clean shuts down  
  48.         // otherwise there will be an unclean shutdown  
  49.         // when program ends  
  50.         st.execute("SHUTDOWN");  
  51.         conn.close();    // if there are no other open connection  
  52.     }  
  53.   
  54. //use for SQL command SELECT  
  55.     public synchronized void query(String expression) throws SQLException {  
  56.   
  57.         Statement st = null;  
  58.         ResultSet rs = null;  
  59.   
  60.         st = conn.createStatement();         // statement objects can be reused with  
  61.   
  62.         // repeated calls to execute but we  
  63.         // choose to make a new one each time  
  64.         rs = st.executeQuery(expression);    // run the query  
  65.   
  66.         // do something with the result set.  
  67.         dump(rs);  
  68.         st.close();    // NOTE!! if you close a statement the associated ResultSet is  
  69.   
  70.         // closed too  
  71.         // so you should copy the contents to some other object.  
  72.         // the result set is invalidated also  if you recycle an Statement  
  73.         // and try to execute some other query before the result set has been  
  74.         // completely examined.  
  75.     }  
  76.   
  77. //use for SQL commands CREATE, DROP, INSERT and UPDATE  
  78.     public synchronized void update(String expression) throws SQLException {  
  79.   
  80.         Statement st = null;  
  81.   
  82.         st = conn.createStatement();    // statements  
  83.   
  84.         int i = st.executeUpdate(expression);    // run the query  
  85.   
  86.         if (i == -1) {  
  87.             System.out.println("db error : " + expression);  
  88.         }  
  89.   
  90.         st.close();  
  91.     }    // void update()  
  92.   
  93.     public static void dump(ResultSet rs) throws SQLException {  
  94.   
  95.         // the order of the rows in a cursor  
  96.         // are implementation dependent unless you use the SQL ORDER statement  
  97.         ResultSetMetaData meta   = rs.getMetaData();  
  98.         int               colmax = meta.getColumnCount();  
  99.         int               i;  
  100.         Object            o = null;  
  101.   
  102.         // the result set is a cursor into the data.  You can only  
  103.         // point to one row at a time  
  104.         // assume we are pointing to BEFORE the first row  
  105.         // rs.next() points to next row and returns true  
  106.         // or false if there is no next row, which breaks the loop  
  107.         for (; rs.next(); ) {  
  108.             for (i = 0; i < colmax; ++i) {  
  109.                 o = rs.getObject(i + 1);    // Is SQL the first column is indexed  
  110.   
  111.                 // with 1 not 0  
  112.                 System.out.print(o.toString() + " ");  
  113.             }  
  114.   
  115.             System.out.println(" ");  
  116.         }  
  117.     }                                       //void dump( ResultSet rs )  
  118.   
  119.     public static void main(String[] args) {  
  120.   
  121.         Testdb db = null;  
  122.   
  123.         try {  
  124.             db = new Testdb("db_file");  
  125.         } catch (Exception ex1) {  
  126.             ex1.printStackTrace();    // could not start db  
  127.   
  128.             return;                   // bye bye  
  129.         }  
  130.   
  131.         try {  
  132.   
  133.             //make an empty table  
  134.             //  
  135.             // by declaring the id column IDENTITY, the db will automatically  
  136.             // generate unique values for new rows- useful for row keys  
  137.             db.update(  
  138.                 "CREATE TABLE sample_table ( id INTEGER IDENTITY, str_col VARCHAR(256), num_col INTEGER)");  
  139.         } catch (SQLException ex2) {  
  140.   
  141.             //ignore  
  142.             //ex2.printStackTrace();  // second time we run program  
  143.             //  should throw execption since table  
  144.             // already there  
  145.             //  
  146.             // this will have no effect on the db  
  147.         }  
  148.   
  149.         try {  
  150.   
  151.             // add some rows - will create duplicates if run more then once  
  152.             // the id column is automatically generated  
  153.             db.update(  
  154.                 "INSERT INTO sample_table(str_col,num_col) VALUES('Ford', 100)");  
  155.             db.update(  
  156.                 "INSERT INTO sample_table(str_col,num_col) VALUES('Toyota', 200)");  
  157.             db.update(  
  158.                 "INSERT INTO sample_table(str_col,num_col) VALUES('Honda', 300)");  
  159.             db.update(  
  160.                 "INSERT INTO sample_table(str_col,num_col) VALUES('GM', 400)");  
  161.   
  162.             // do a query  
  163.             db.query("SELECT * FROM sample_table WHERE num_col &lt 250");  
  164.   
  165.             // at end of program  
  166.             db.shutdown();  
  167.         } catch (SQLException ex3) {  
  168.             ex3.printStackTrace();  
  169.         }  
  170.     }    // main()  
  171. }    // class Testdb  
分享到:
评论

相关推荐

    iBatis-设置缓存模式-Java源码(下载)

    &lt;property name="JDBC.Driver" value="org.hsqldb.jdbcDriver"/&gt; &lt;property name="JDBC.ConnectionURL" value="jdbc:hsqldb:data/tutorial"/&gt; &lt;property name="JDBC.Username" value="sa"/&gt; &lt;property name="...

    组态王仿真学习案例:石灰石断烧系统详解,实时历史曲线记录、报表分析与报警管理一网打尽,入门到进阶全功能展示

    内容概要:本文详细介绍了利用组态王进行石灰石煅烧系统的仿真开发,涵盖实时曲线绘制、报警系统配置、报表生成功能等多个方面。文章从实际案例出发,通过具体的代码片段和操作步骤,讲解了如何实现温度PID控制、设备联锁、能源统计等功能。同时,作者分享了许多实践经验,如解决曲线不刷新问题、优化报警逻辑、提高报表生成效率等,帮助读者快速掌握组态王的核心技术和应用场景。 适合人群:对工业自动化感兴趣的初学者以及希望深入了解组态王使用的工程师。 使用场景及目标:适用于需要构建工业控制系统仿真模型的学习者或开发者,旨在通过实例演练提升对组态王的理解和运用能力,最终能够独立完成类似项目的开发。 其他说明:文中提供了丰富的代码示例和技术细节,有助于读者更好地理解和实践。此外,还特别强调了一些常见的错误和注意事项,如控件命名规范、数据源绑定规则等,确保项目顺利实施。

    CAD绘制圆形洞室展示图的初步实现.docx

    CAD绘制圆形洞室展示图的初步实现.docx

    基于下垂虚拟同步机的三电平双机离网并联仿真模型:C语言算法,性能优越,适用于储能逆变器和UPS产品,环流小,动态响应良好。

    内容概要:本文详细介绍了基于C语言实现的三电平双机离网并联虚拟同步机控制算法。该算法主要用于解决储能逆变器和UPS系统中双机并联运行时遇到的问题,如功率分配不均、环流超标和动态响应不佳。文中展示了具体的下垂控制、环流抑制、动态响应优化以及中点电位平衡等核心技术的实现方式。此外,还讨论了如何通过自适应虚拟阻抗、状态观测器和查表法等手段提高系统的稳定性和效率。最终,该算法在实际项目中表现出色,实现了高效的功率分配和稳定的动态响应。 适合人群:从事电力电子、储能系统和UPS系统开发的技术人员,尤其是对C语言编程和控制算法有一定了解的研发人员。 使用场景及目标:适用于需要高效、稳定双机并联运行的储能逆变器和UPS系统的设计与开发。主要目标是解决双机并联时的功率分配不均、环流超标和动态响应慢等问题,确保系统在各种工况下的稳定性和可靠性。 其他说明:本文不仅提供了详细的代码实现,还分享了许多实用的调试技巧和实践经验,有助于读者更好地理解和应用这些技术。

    方波信号发生器电路仿真

    方波信号发生器电路仿真,基于LM741运算放大器的方波信号发生器电路仿真设计及实现

    2025年电子商务四级培训计划.doc

    2025年电子商务四级培训计划.doc

    2023年高中信息技术Excel知识点整理.docx

    2023年高中信息技术Excel知识点整理.docx

    FX5UPLC以太网通讯实例:SOCKET通讯、SLMP协议通讯、JE-C伺服电机控制及Modbus通讯等真实验证程序套

    内容概要:本文详细介绍了三菱FX5U PLC在工业自动化领域的以太网通讯实战经验,涵盖多种常见通讯方式的具体实现方法。主要内容包括:两台PLC之间的Socket通讯,通过C#上位机使用SLMP协议读取PLC寄存器,JE-C伺服电机的以太网控制,以及Modbus RTU和TCP的应用。每种通讯方式均提供了具体的代码示例和调试技巧,确保读者能够快速理解和应用。此外,还特别强调了常见的避坑指南,帮助解决实际操作中可能出现的问题。 适合人群:从事工业自动化、PLC编程及相关领域的工程师和技术人员,特别是那些希望深入了解三菱FX5U PLC以太网通讯机制的人群。 使用场景及目标:适用于需要进行PLC间通讯、PLC与上位机通讯、伺服电机控制以及Modbus协议应用的实际工程项目。目标是提高通讯效率,减少调试时间和错误发生率。 其他说明:文中提供的代码均为经过产线验证的真实程序,可以直接应用于实际项目中。同时,作者分享了许多宝贵的实践经验,有助于读者更好地掌握相关技能并避免常见错误。

    r_code_and_sample_data_for_drawing_apa_diagram.zip

    计算融合图像(IDL 和 Python 代码)全方位性能评估(APA)指标及绘制 APA 图表的 R 代码

    2023年软考信息处理技术员考试历年模拟真题三.docx

    2023年软考信息处理技术员考试历年模拟真题三.docx

    社交聊天即时通讯App开发:双端原生、朋友圈、三方通讯云对接及支付功能集成

    内容概要:本文详细介绍了社交聊天即时通讯App的开发要点,涵盖Android和iOS双端原生开发、朋友圈功能、三方云通讯以及支付功能对接。重点讨论了消息系统的优化、朋友圈图片九宫格布局、支付接口的安全性和性能优化等方面的内容。通过具体代码示例展示了如何处理消息发送、接收、状态管理、图片加载、支付回调等问题,并分享了一些实用的经验和技巧。 适合人群:具备一定移动开发经验的开发者,尤其是正在从事或计划从事社交类App开发的技术人员。 使用场景及目标:帮助开发者理解和掌握社交App开发的关键技术和最佳实践,确保消息传输稳定、朋友圈功能流畅、支付安全可靠。适用于希望提高社交App用户体验和技术架构稳健性的开发团队。 其他说明:文中提供了大量实战经验和代码片段,强调了跨平台一致性、性能优化和用户体验的重要性。同时提醒开发者关注平台特异性问题,如iOS和Android之间的差异,以及支付接口的安全校验等。

    信捷原创程序:4个伺服轴的PLC与HMI控制方案

    内容概要:本文详细介绍了信捷XC5-48T PLC和TG765 HMI在三号车间设备改造项目中的应用。重点讨论了四轴伺服控制系统的编程架构、状态机设计、HMI界面设计以及调试工具的使用。文章强调了多轴联动时序控制的重要性,展示了如何通过状态机和互锁机制确保系统的稳定性和可靠性。同时,HMI设计采用了分层式布局和防呆设计,提高了操作的安全性和便捷性。此外,文中还提到了一些实用的调试技巧和注释规范,为后续维护提供了便利。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和HMI设计有一定基础的人群。 使用场景及目标:适用于需要进行多轴伺服控制系统设计和调试的工程项目。目标是帮助工程师理解和掌握信捷XC5-48T PLC和TG765 HMI的应用方法,提高系统的可靠性和易用性。 其他说明:文章不仅提供了具体的编程示例,还分享了许多实践经验,如状态机设计、互锁机制、防呆设计等,有助于读者更好地理解和应用相关技术。

    自定义扩展,简化策略类,方便使用

    自定义扩展,简化策略类,方便使用

    2025年全国计算机软件专业高级程序员级试题.docx

    2025年全国计算机软件专业高级程序员级试题.docx

    V公司汽车零部件开发工具:全套bootloader中UDS协议栈源代码,含底层外设驱动开发集成服务

    内容概要:本文详细介绍了V公司提供的UDS协议栈源代码及其在汽车电子开发中的应用。该协议栈以其精简高效的代码结构、良好的底层外设驱动集成以及强大的状态机设计而著称。文中展示了典型的服务路由器函数、Flash驱动接口、CAN通信接口等关键部分的代码片段,并讨论了其在实际项目中的表现和优化技巧。此外,还提到了一些潜在的问题和解决方案,如内存管理和多线程处理等。 适合人群:从事汽车电子开发的技术人员,尤其是对UDS协议栈感兴趣的开发者。 使用场景及目标:适用于需要快速集成UDS协议栈并进行定制化开发的项目。主要目标是在保证稳定性和性能的前提下,减少开发时间和复杂度。 其他说明:文中提供了丰富的实例和实践经验,帮助读者更好地理解和应用V公司的UDS协议栈。同时提醒读者注意特定平台下的兼容性和优化问题。

    黄河流域78地市用水效率与调水工程效用空间格局数据集(2013-2020)

    作者以黄河流域78个地级行政单元为研究区,基于各省水资源公报、社会经济等数据,计算得到黄河流域78地市用水效率与调水工程效用空间格局数据集(2013-2020)。该数据集内容包括以下数据:(1)研究区范围数据;(2)历年各地市用水效率数据;(3)历年各地市水资源压力数据;(4)南水北调效用数据。数据集存储为.shp和.xlsx格式。由9个数据文件组成,数据量为4.41 MB(压缩为1个文件,2.80 MB)Ma, L., Wang, Q. Do water transfer projects promote water use efficiency? Case study of South-to North Water Transfer Project in Yellow River Basin of China. Water 2024, 16: 1367. https://doi.org/10.3390/w16101367.

    「热电偶测温方案」实现多种类型热电偶与Pt100的测温及冷端补偿,附驱动源码和工程解析(包括STM32)

    内容概要:本文详细介绍了利用AD7124实现热电偶和Pt100测温的高精度方案,涵盖硬件设计、冷端补偿算法以及完整的源码实现。首先解释了Pt100的工作原理及其三线制和四线制连接方法,提供了具体的C语言代码示例用于计算Pt100电阻并转化为温度。接着讨论了热电偶的不同类型及其处理方法,展示了如何根据热电偶类型和测量电压计算温度。此外,深入探讨了NTC热敏电阻在冷端补偿中的应用,给出了相应的代码实现。最后,分享了整个方案的硬件设计要点,如AD7124的配置、滤波电路的设计等,并强调了源码的可移植性和优化技巧。 适合人群:从事温度测量领域的工程师和技术人员,尤其是对热电偶和Pt100传感器有一定了解的人群。 使用场景及目标:适用于需要高精度温度测量的应用场合,如工业自动化、实验室设备等。目标是帮助读者掌握基于AD7124的热电偶和Pt100测温系统的实现方法,包括硬件搭建、软件编程和冷端补偿等方面的知识。 其他说明:文中提供的源码和硬件设计方案可以直接应用于STM32平台,同时也适合作为其他MCU平台的参考。对于希望深入了解温度测量技术和提高测量精度的技术人员来说,本文是一份非常有价值的参考资料。

    Motorcad '一'字型永磁同步电机设计案例(PMSM):电磁场与温度场计算详解

    内容概要:本文详细介绍了5kW一字型永磁同步电机的设计过程,涵盖电磁场和温度场的优化。首先,通过调整定子辅助槽的参数,如槽宽、槽深和角度偏移,显著降低了齿槽转矩。其次,在温度场方面,采用高效的水冷系统和合理的散热筋设计,确保电机在高温环境下稳定运行。此外,文中还探讨了极弧系数优化、磁钢排列以及高频噪声抑制等问题。通过MotorCAD进行电磁-热耦合仿真,解决了多个设计难题,实现了高性能和可靠性。 适合人群:电机设计工程师、电磁场仿真技术人员、高校相关专业师生。 使用场景及目标:适用于高功率密度电机设计项目,旨在提高电机性能、降低能耗并延长使用寿命。目标是掌握永磁同步电机的关键设计技术和仿真方法。 其他说明:文中提供了大量Python和Matlab代码示例,帮助读者更好地理解和实践电机设计中的关键技术。同时强调了理论与实践经验相结合的重要性,为实际工程应用提供指导。

    逆退火算法改进的人工势场模型:精准导航,随意调整障碍物,简洁注释,直接运行

    内容概要:本文详细介绍了基于逆退火算法改进的人工势场模型及其在路径规划领域的应用。首先指出了传统人工势场模型存在的局限性,即容易陷入局部最优解,难以应对动态变化的障碍物。接着阐述了逆退火算法的核心思想,即通过逐步扩大搜索范围,使模型能够在后期更容易摆脱障碍物的影响,从而准确到达目的地。文中提供了具体的Python代码实现,包括改进后的势场计算函数、路径规划主循环以及可视化部分。此外,还讨论了如何灵活调整障碍物参数,使得模型能够适应不同场景的需求。 适合人群:对路径规划算法感兴趣的科研人员、工程师和技术爱好者,尤其是那些希望深入了解人工势场模型及其改进方法的人群。 使用场景及目标:适用于机器人导航、游戏角色路径规划等领域,旨在提高路径规划的灵活性和准确性,解决传统模型中存在的局部最优问题。 其他说明:文章不仅提供了理论解释,还包括完整的可运行代码示例,便于读者理解和实践。同时,强调了逆退火算法在动态环境中表现出的优势,如快速响应障碍物变化的能力。

    深度学习+神经网络+VGG16模型+学习案例

    里面包含VGG16网络模型的markdown介绍文档以及学习案例代码,数据集采用FashionMNIST

Global site tag (gtag.js) - Google Analytics