当前位置: 首页 > 编程日记 > 正文

java sqlite使用小记

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Sqlite教程: http://www.runoob.com/sqlite/sqlite-tutorial.html

加载sqlite jdbc驱动:
static{
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

获取数据库连接:
private Connection conn = getConn();
public Connection getConn(){
if(conn==null){
try {
conn = DriverManager.getConnection("jdbc:sqlite:message.db");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return conn;
}

创建表:
/**
* 创建message表
*
* @author cjianquan
* 2015-8-4
*/
public void createTableMsg(){
try {
Statement stat = conn.createStatement();
StringBuilder createSql = new StringBuilder();
createSql.append("create table message( msg_id text primary key not null,")
.append("msg_type text ,")
.append("msg_direction text ,")
.append("msg_from text,")
.append("msg_to text,")
.append("msg_msg text,")
.append("msg_url text,")
.append("msg_sound text,")
.append("msg_time text );");
stat.executeUpdate(createSql.toString());
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


插入表数据:
/**
*  判断是否存在表message
* @return
* @author cjianquan
* 2015-8-4
*/
public boolean isTableExists(){
boolean flag = false;
try {
Statement stat = conn.createStatement();
String sql = "select count(1) from message ";
stat.executeQuery(sql);
flag = true;
stat.close();
} catch (SQLException e) {
flag = false;
}
return flag;
}
public void insertMessage(Message msg){
boolean flag = isTableExists();
if(flag){
try {
StringBuilder insertSql = new StringBuilder();
insertSql.append("insert into message(msg_id,")
.append("msg_type,msg_direction,msg_from,")
.append("msg_to,msg_msg,msg_url,msg_sound,msg_time) ")
.append("values (?,?,?,?,?,?,?,?,?);");
PreparedStatement stat = conn.prepareStatement(insertSql.toString());
stat.setString(1, msg.getId());
stat.setString(2, msg.getType());
stat.setString(3, msg.getDirection());
stat.setString(4, msg.getFrom());
stat.setString(5, msg.getTo());
stat.setString(6, msg.getMsg());
stat.setString(7, msg.getMsgUrl());
stat.setString(8, msg.getSound());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(msg.getTime()==null || "".equals(msg.getTime())){
msg.setTime(sdf.format(new Date()));
}
stat.setString(9, msg.getTime());
stat.execute();
stat.close();
//conn.commit();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
createTableMsg();
insertMessage(msg);
}
}

查询表数据:
public List<Message> queryMessage(Page page){
boolean flag = isTableExists();
List<Message> rtnList = new ArrayList<Message>();
if(flag){
int offset = (page.getCurPage()-1)*page.getPageSize();
String querySql = "select * from ( select * from message order by msg_time desc) limit "+page.getPageSize()+" offset "+offset+" ;";
try {
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(querySql);
while(rs.next()){
Message msg = new Message();
msg.setId(rs.getString("msg_id"));
msg.setType(rs.getString("msg_type"));
msg.setDirection(rs.getString("msg_direction"));
msg.setFrom(rs.getString("msg_from"));
msg.setTo(rs.getString("msg_to"));
msg.setMsg(rs.getString("msg_msg"));
msg.setMsgUrl(rs.getString("msg_url"));
msg.setSound(rs.getString("msg_sound"));
msg.setTime(rs.getString("msg_time"));
rtnList.add(msg);
}
rs = null;
rs = statement.executeQuery("select count(*) cnt from message");
if(rs.next()){
page.setTotal(Integer.parseInt(rs.getString("cnt")));
}
rs.close();
statement.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}else{
createTableMsg();
}
return rtnList;
}

转载于:https://my.oschina.net/u/2552902/blog/543818

相关文章:

算法基础知识科普:8大搜索算法之AVL树(中)

昨天我们介绍了平衡二叉树的基本概念&#xff0c;通过平衡因子来控制左右子树的深度&#xff0c;使得整个二叉搜索树始终保持平衡状态。这个算法的核心在于当平衡因子超过范围&#xff0c;如何通过旋转的方式来使二叉搜索树保持平衡&#xff0c;以及平衡后对应结点平衡因子如何…

Linux登录那点事

跨平台系列汇总&#xff1a;http://www.cnblogs.com/dunitian/p/4822808.html#linux 我们登录linux的时候基本上不太关注上面的这个提示&#xff0c;其实这个还是有点文章的 简单解释一下&#xff1a; 上一次dnt用户登录的时间&#xff0c;以及终端是tty1 知识普及&#xff1a;…

解决了一个遗留的Portlet奇怪问题

在做Portlet的时候碰到一个奇怪的问题&#xff0c;使用Java应用程序来进行RFT传输好好的&#xff0c;但在Pluto下&#xff0c;同样的一段程序却不行&#xff0c;提示&#xff1a;No client transport named https found!  搜索GT官网的maillist&#xff0c;发现有人提到是AXI…

Python 程序如何高效地调试?

Python在debug方面的支持还是不错的&#xff0c;在明确代码意义的情况下&#xff0c;通过log、print和assert分析错误原因&#xff0c;配合单元测试可以很高效。然而&#xff0c;实际工作中大量代码很可能出自他人之手&#xff0c;这种情况下&#xff0c;使用debugger就显得更加…

selenium中javascript调试

之前写了使用js输入长文件的文章&#xff0c;有同事在使用时&#xff0c;发现竟然无法输入&#xff0c;也不知道是什么原因&#xff0c;且用的还是id方式。 在参考网文后&#xff0c;才发现是js写的有问题&#xff0c;现总结一下 javascript调试&#xff0c;在firefox中就自带有…

算法基础知识科普:8大搜索算法之AVL树(下)

昨天我们介绍了在进行结点插入时&#xff0c;若左子树深度超过右子树深度两层则进行右旋来保持平衡。今天继续介绍&#xff0c;若右子树深度超过左子树深度两层时的左旋操作&#xff0c;以及删除结点后平衡因子的变更问题。 这些都掌握后&#xff0c;基本上对AVL就有一个很全面…

《代码敲不队》第八次团队作业:Alpha冲刺 第二天

项目内容这个作业属于哪个课程任课教师博客主页链接这个作业的要求在哪里作业链接地址团队名称代码敲不队作业学习目标掌握软件编码实现的工程要求。团队项目github仓库地址链接 GitHub 第二天 日期&#xff1a;2019/6/16 今日完成任务情况以及遇到的问题 针对设计好的数据库&a…

我的.net程序为何不能执行?

今天早上习惯性的打开公司内部的网站。不料却发现我在输入地址后&#xff0c;系统竟会弹出一个对话框要求输入用户名和密码。想了想后&#xff0c;输入了AD的密码&#xff0c;就可以进入了网站。不经意间我又发现所有的asp.net的页面都不能打开&#xff0c;而asp的页面却一点问…

利用MySQL触发器实现check和assertion

MySQL虽然输入check语句不会报错&#xff0c;但是实际上并没有check的功能。但是MySQL 依然可以利用触发器来实现相应功能。 本文将根据两个例子简要阐述MySQL实现check和assertion的思路。 MySQL触发器 官方文档 MySQL Signal 官方文档 注意 signal异常处理功能在MySQL5.5版本…

算法基础知识科普:8大搜索算法之红黑树(上)

平衡二叉树&#xff08;AVL&#xff09;是一种特殊的二叉搜索树&#xff08;BST&#xff09;&#xff0c;即每个结点的值都大于其左子树且小于其右子树的值&#xff08;若存在&#xff09;&#xff0c;并通过引入平衡因子的概念来保持树的平衡。平衡二叉树算法的重点是在插入、…

Java Web学习总结(17)——JSP属性范围

2019独角兽企业重金招聘Python工程师标准>>> 所谓的属性范围就是一个属性设置之后&#xff0c;可以经过多少个其他页面后仍然可以访问的保存范围。 一、JSP属性范围 JSP中提供了四种属性范围&#xff0c;四种属性范围分别指以下四种&#xff1a; 当前页&#xff1a;…

为什么不提供离线Blog管理工具呢?

网络Blog现在是到处开花, 好像全世界的网民都开始写Blog了. 但因为Web的HTTP无状态协议, 网站本身都自己设置有session过期时间. 如果写的Blog文字多,时间一长用户登录状态就没了,当你提交你的文字时系统会出错,结果你回来时,你辛辛苦苦写的长长的文字都没了, 你是不是很气愤?…

javascript a 标签打开相对路径,绝对路径

<a>标签中的href中&#xff0c;如果你写一个路径默认是以相对路径打开的&#xff0c;加上"http://" 消息头那就可以打开绝对路径 html&#xff1a; <a hrefjavascript:void(0); target_blank onclickCommon.openUrl(" rowObject.baiduPanUrl ")…

算法基础知识科普:8大搜索算法之红黑树(中)

红黑树也是一种特殊形式的二叉搜索树&#xff0c;通过结点的颜色以及三条规则来保证二叉搜索树的平衡。规则1&#xff1a;根结点的颜色是黑色&#xff0c;规则2&#xff1a;叶子结点到根结点路径上遇到的黑色结点数目相同&#xff0c;规则3&#xff1a;叶子结点到根结点路径上无…

Java基础学习总结(3)——抽象类

2019独角兽企业重金招聘Python工程师标准>>> 一、抽象类介绍 下面通过一下的小程序深入理解抽象类 因此在类Animal里面只需要定义这个enjoy()方法就可以了&#xff0c;使用abstract关键字把enjoy()方法定义成一个抽象方法&#xff0c;定义如下&#xff1a;public ab…

Knuth(佩服的一塌糊涂)

Donald Knuth自传的开头这样写道&#xff1a;“Donald Knuth真的只是一个人么&#xff1f;”(我觉得不是&#xff0c;^_^)作为世界顶级计算机科学家之一&#xff0c;Knuth教授已经完成了编译程序、属性文法和运算法则的前沿研究&#xff0c;并编著完成了已在程序设计领域中具有…

编程基础知识科普:C#中的问号运算符

C#是一门非常性感的语言&#xff0c;时不时冒出一些语法糖来满足大家的需求&#xff0c;问号运算符就是其中的一种。我们知道基础数据类型的默认值都是基础数据类型的&#xff0c;如int为0&#xff0c;double为0.0&#xff0c;bool为false等等&#xff0c;而引用类型的默认值为…

Listener监听器之HttpSessionListener

编写一个OnlineUserListener。 package anni; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionEvent;public class OnlineUserL…

ActiveMQ快速入门

2019独角兽企业重金招聘Python工程师标准>>> 1.下载ActiveMQ 去官方网站下载&#xff1a;http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip&#xff0c;然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。 启动Act…

企业为什么要使用基于Docker的PaaS/CaaS平台

作者&#xff1a;精灵云 前言早在十多年前国内外的一些大厂就开始投入研发和使用容器技术&#xff0c;比如Google&#xff0c;对他们来说&#xff0c;使用容器能够充分利用计算资源节省硬件成本。而这几年——众所周知——真正把容器技术发扬光大的是Docker。Docker的slogan“B…

算法基础知识科普:8大搜索算法之红黑树(下)

这是介绍红黑树的最后一部分&#xff0c;令y为要删除结点&#xff0c;n为要删除结点的子结点&#xff08;子结点最多有1个&#xff09;&#xff0c;w为y的兄弟结点&#xff0c;删除操作的重点是使红黑树删除结点并通过调整后仍满足自身是搜索二叉树和设定的三点规则。删除操作可…

asp提供在线文章翻译的功能(转)

有时候想为我们的网页提供多语言支持&#xff0c;如果一种语言用一张网页来做实在太麻烦了&#xff0c;幸好Google提供了语言工具功能&#xff0c;下面介绍如何利用它来实现网页多种语言之间的转换。 作者&#xff1a;淘特网 出处&#xff1a;http://www.tot.name 注&#xff1…

Java基础学习总结(13)——流IO

2019独角兽企业重金招聘Python工程师标准>>> 一、JAVA流式输入/输出原理 流是用来读写数据的&#xff0c;java有一个类叫File&#xff0c;它封装的是文件的文件名&#xff0c;只是内存里面的一个对象&#xff0c;真正的文件是在硬盘上的一块空间&#xff0c;在这个文…

ASP.NET 2.0 绑定高级技巧

1.简单数据绑定定<!--ASP.NET 1.x data binding expression --><%# DataBinder.Eval(Container.DataItem, "Price") %><!--Equivalent ASP.NET 2.0 data binding expression --><%# Eval("Price") %><!--XML data binding --&g…

JSP中的EL表达式详细介绍

2019独角兽企业重金招聘Python工程师标准>>> 一、JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0…

Software development Problem

筹划“软件开发过程”以及“面向对象分析与设计”这个话题已有很长时间。虽然大学毕业后在Rational公司学习过这方面的内容&#xff0c;这几年带着团队也一直践行里面的理念与方法&#xff0c;但总感觉自己理解的不透彻&#xff0c;不敢动笔。 10年过去了&#xff0c;总不能一…

Spring MVC常用注解说明

2019独角兽企业重金招聘Python工程师标准>>> 使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能。02 之前在使用Struts2实现MVC的注解时&#xff0c;是借助struts2-convention这个插件&#xff0c;如今我们使用Spring自带的spring-webmvc组件来实现同…

代码规范性与品质问题~

&#xff12;&#xff10;&#xff10;&#xff11;年在delphibbs做“首届Delphi编程竞赛”活动(http://www.delphibbs.com/delphibbs/dispq.asp?lid650664)的时候&#xff0c;曾就代码的规范性与品质问题与大家进行过讨论&#xff0c;摘录一些言论如下&#xff1a;3. 我们公司…

FutureTask中Treiber堆的实现

2019独角兽企业重金招聘Python工程师标准>>> 在文章FutureTask源码分析中简单说明了FutureTask中使用Treiber堆栈来保存等待结果的线程&#xff0c;本文将详细分析其原理。 Treiber堆使用CAS操作来实现节点的入栈和出栈&#xff0c;由于CAS操作只是保证操作的原子性…

软件开发过程中遇到的问题

今天早晨去石家庄河北电力工程监理有限公司&#xff0c;回来后就在整理这篇图文&#xff0c;结果还是过了12:00。这是针对昨天图文“Software Development Problem”的翻译以及自己的一些理解&#xff0c;分享给大家。 其实&#xff0c;看看这些东西蛮好的&#xff0c;最起码能…