求助sqlite问题!望大家帮忙..

woshicaiyuyu 2011-08-17 06:58:53
我使用sqlite建立数据库后,为什么我使用insert语句后,虽然程序有显示正常,可是我的db文件里面还是没有数据


源代码:
/**
* 功能:数据库连接类
*/
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Dao{
// static Connection conn = null;
static Statement stmt = null;
static ResultSet rs = null;
static
{
try
{
Class clz = Class.forName("SQLite.JDBCDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlite:/DATA/1.db");
conn.setAutoCommit(false);
stmt = conn.createStatement();
}catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Dao()
{
}
public static void main(String[] args)
{
System.out.println("数据库测试类");
// new Dao();
try
{
stmt.executeUpdate( "create table tbl1(name varchar(20), salary int);" );//创建一个表,两列


stmt.executeUpdate( "insert into tbl1 values('ZhangSan',8000);" ); //插入数据

stmt.executeUpdate( "insert into tbl1 values('LiSi',7800);" );
stmt.executeUpdate( "insert into tbl1 values('WangWu',5800);" );
stmt.executeUpdate( "insert into tbl1 values('ZhaoLiu',9100);" );
stmt.executeUpdate( "update tb_every_day_count set edc_date = '1111';" );

rs = stmt.executeQuery("select * from tbl1"); //查询数据

while (rs.next()) { //将查询到的数据打印出来

System.out.print("name = " + rs.getString("name") + " "); //列属性一

System.out.println("salary = " + rs.getString("salary")); //列属性二

}
rs.close();


}catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
...全文
76 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
softroad 2011-08-17
  • 打赏
  • 举报
回复
建议手动提交,可以处理事务。
luohuijun619 2011-08-17
  • 打赏
  • 举报
回复
数据库没提交事务肯定不执行
24K純帥 2011-08-17
  • 打赏
  • 举报
回复
恩,没有setAutoCommit
风尘中国 2011-08-17
  • 打赏
  • 举报
回复
两个解决思路,第一种保留 conn.setAutoCommit(false); 但是在程序退出之前执行Connection.commit()方法,这样conn就得设置为类全局静态变量
第二种就是conn.setAutoCommit(false);注解掉,或设置conn.setAutoCommit(true);默认状态是自动提交的
woshicaiyuyu 2011-08-17
  • 打赏
  • 举报
回复
万分感谢~!我明白了!!
风尘中国 2011-08-17
  • 打赏
  • 举报
回复
楼主的代码质量不高,首先说为什么没插入数据
因为你里面有这样一行
 conn.setAutoCommit(false);
,所以SQL语句不会自动提交,而且你整个程序都没有Statement和Connection的关闭语句,所以SQL最终根本没有提交

所以解决方法有两个
第一,取消
 conn.setAutoCommit(false);

第二,JDBC操作完毕及时关闭Statement和Connection
qybao 2011-08-17
  • 打赏
  • 举报
回复
conn.setAutoCommit(false); //不是自动commit

所以你insert完数据以后,一定要自己调用 conn.commit();才能反映到后台db,否则,一切都是浮云。。。


62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧