sqlite3 java 内存_java – 当jdbc与sqlite3数据库连接时,我该怎么做才能避免“内存不足”的错误?...

This表示找不到您的clients.db文件.尝试更恰当地定位该文件.向下滚动到标题为“如何指定数据库文件”的部分.

我下载了SQLite JAR,将它放在我的CLASSPATH中,并发现了一个在不到五分钟内完美运行的教程here.正如预期的那样,它将test.db放在我的项目根目录中.

我按照我的方式重写了那个教程.有用.不要说它什么也没带来.

package sqlite;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

public class Test

{

private static final String DEFAULT_DRIVER = "org.sqlite.JDBC";

private static final String DEFAULT_URL = "jdbc:sqlite:data/test.db";

public static void main(String[] args)

{

Connection conn = null;

try

{

conn = createConnection(DEFAULT_DRIVER, DEFAULT_URL);

createTable(conn);

List people = new ArrayList();

people.add(new Person("Gandhi", "politics"));

people.add(new Person("Wittgenstein", "philosophy"));

people.add(new Person("Turing", "computers"));

saveAll(conn, people);

List rows = findAll(conn);

System.out.println(rows);

}

catch (ClassNotFoundException e)

{

e.printStackTrace();

}

catch (SQLException e)

{

e.printStackTrace();

}

finally

{

close(conn);

}

}

private static List findAll(Connection conn) throws SQLException

{

List rows = new ArrayList();

ResultSet rs = null;

Statement stat = null;

try

{

stat = conn.createStatement();

rs = stat.executeQuery("select * from people;");

while (rs.next())

{

rows.add(new Person(rs.getString("name"), rs.getString("occupation")));

}

}

finally

{

close(stat);

close(rs);

}

return rows;

}

private static void saveAll(Connection conn, List people) throws SQLException

{

PreparedStatement prep = null;

try

{

prep = conn.prepareStatement("insert into people values (?, ?);");

for (Person person : people)

{

prep.setString(1, person.getName());

prep.setString(2, person.getOccupation());

prep.addBatch();

}

conn.setAutoCommit(false);

prep.executeBatch();

conn.setAutoCommit(true);

}

finally

{

close(prep);

}

}

private static void createTable(Connection conn) throws SQLException

{

Statement stat = null;

try

{

stat = conn.createStatement();

stat.executeUpdate("drop table if exists people;");

stat.executeUpdate("create table people (name, occupation);");

}

finally

{

close(stat);

}

}

private static Connection createConnection(String driver, String url) throws ClassNotFoundException, SQLException

{

Class.forName(DEFAULT_DRIVER);

Connection conn = DriverManager.getConnection(DEFAULT_URL);

return conn;

}

private static void close(Connection conn)

{

try

{

if (conn != null)

{

conn.close();

}

}

catch (Exception e)

{

e.printStackTrace();

}

}

private static void close(Statement stat)

{

try

{

if (stat != null)

{

stat.close();

}

}

catch (Exception e)

{

e.printStackTrace();

}

}

private static void close(ResultSet rs)

{

try

{

if (rs != null)

{

rs.close();

}

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

class Person

{

private String name;

private String occupation;

Person(String name, String occupation)

{

this.name = name;

this.occupation = occupation;

}

public String getName()

{

return this.name;

}

public String getOccupation()

{

return this.occupation;

}

public String toString() {

StringBuilder sb = new StringBuilder();

sb.append("{ name: ").append(this.name).append(", occupation: ").append(this.occupation).append(" }");

return sb.toString();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值