我使用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();
} }
}
源代码:
/**
* 功能:数据库连接类
*/
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();
} }
}
因为你里面有这样一行 conn.setAutoCommit(false);,所以SQL语句不会自动提交,而且你整个程序都没有Statement和Connection的关闭语句,所以SQL最终根本没有提交所以解决方法有两个
第一,取消 conn.setAutoCommit(false);
第二,JDBC操作完毕及时关闭Statement和Connection
第二种就是conn.setAutoCommit(false);注解掉,或设置conn.setAutoCommit(true);默认状态是自动提交的