ฉันดึงดูดความเรียบร้อยที่ฐานข้อมูลไฟล์เดียวให้ ไลบรารีไดรเวอร์ / ตัวเชื่อมต่อใดที่อยู่ข้างนอกเพื่อเชื่อมต่อและใช้ SQLite กับ Java
ฉันค้นพบไลบรารีแรปเปอร์แล้วhttp://www.ch-werner.de/javasqliteแต่มีโครงการเด่นอื่น ๆ อีกหรือไม่
ฉันดึงดูดความเรียบร้อยที่ฐานข้อมูลไฟล์เดียวให้ ไลบรารีไดรเวอร์ / ตัวเชื่อมต่อใดที่อยู่ข้างนอกเพื่อเชื่อมต่อและใช้ SQLite กับ Java
ฉันค้นพบไลบรารีแรปเปอร์แล้วhttp://www.ch-werner.de/javasqliteแต่มีโครงการเด่นอื่น ๆ อีกหรือไม่
คำตอบ:
วิกิพีเดียบางรายการห่อเพิ่มเติมได้ที่:
ฉันพบคำถามของคุณในขณะค้นหาข้อมูลด้วยSQLiteและ Java แค่คิดว่าฉันจะเพิ่มคำตอบที่ฉันโพสต์ในบล็อกของฉันด้วย
ฉันได้รับการเข้ารหัสใน Java มาระยะหนึ่งแล้ว ฉันเคยรู้จัก SQLite มาก่อน แต่ไม่เคยใช้ ... ฉันเคยใช้มันผ่านแอพพลิเคชั่นอื่นแต่ไม่เคยใช้แอพที่ฉันเขียนโปรแกรม ดังนั้นฉันจึงต้องการมันสำหรับโครงการในสัปดาห์นี้และมันใช้ง่ายมาก!
ฉันพบไดรเวอร์ Java JDBC สำหรับ SQLite เพียงเพิ่มไฟล์ JARใน classpath ของคุณและนำเข้า java.sql *
แอปทดสอบของเขาจะสร้างไฟล์ฐานข้อมูลส่งคำสั่ง SQL เพื่อสร้างตารางเก็บข้อมูลบางอย่างในตารางแล้วอ่านกลับและแสดงบนคอนโซล มันจะสร้างไฟล์test.dbในไดเรกทอรีรากของโครงการ java -cp .:sqlitejdbc-v056.jar Test
คุณสามารถเรียกใช้ตัวอย่างนี้ด้วย
package com.rungeek.sqlite;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation);");
PreparedStatement prep = conn.prepareStatement(
"insert into people values (?, ?);");
prep.setString(1, "Gandhi");
prep.setString(2, "politics");
prep.addBatch();
prep.setString(1, "Turing");
prep.setString(2, "computers");
prep.addBatch();
prep.setString(1, "Wittgenstein");
prep.setString(2, "smartypants");
prep.addBatch();
conn.setAutoCommit(false);
prep.executeBatch();
conn.setAutoCommit(true);
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
}
rs.close();
conn.close();
}
}
ฉันเข้าใจว่าคุณถามเฉพาะเกี่ยวกับ SQLite แต่บางทีฐานข้อมูล HSQLอาจจะเหมาะสมกับ Java มากกว่า มันเขียนใน Java เองทำงานใน JVM สนับสนุนตารางในหน่วยความจำ ฯลฯ และคุณสมบัติทั้งหมดที่ทำให้มันใช้งานได้ค่อนข้างสำหรับต้นแบบและการทดสอบหน่วย
โครงการ David Crawshaw (sqlitejdbc-v056.jar) ล้าสมัยและอัปเดตครั้งล่าสุดคือ 20 มิ.ย. 2009 แหล่งที่มาที่นี่
ฉันขอแนะนำXerials forkของ wrapper Crawshaw sqlite ฉันแทนที่ sqlitejdbc-v056.jar ด้วยไฟล์ Xerials sqlite-jdbc-3.7.2.jar โดยไม่มีปัญหาใด ๆ
ใช้ไวยากรณ์เดียวกับคำตอบของเบอร์นีและเร็วกว่ามากและมีไลบรารี sqlite ล่าสุด
อะไรคือสิ่งที่แตกต่างจาก Ziteus ของ SQLite JDBC
http://www.zentus.com/sqlitejdbc/ตัวเองของ Zentus นั้นเป็นยูทิลิตี้ที่ยอดเยี่ยมสำหรับการใช้ฐานข้อมูล SQLite จากภาษาจาวาและห้องสมุด SQLiteJDBC ของเราก็ขึ้นอยู่กับการใช้งาน อย่างไรก็ตามเวอร์ชัน pure-java ซึ่งแปลโค้ด c / c ++ ทั้งหมดของ SQLite เป็น Java นั้นช้าลงอย่างมากเมื่อเทียบกับรุ่นเนทีฟซึ่งใช้ไบนารี SQLite ที่คอมไพล์สำหรับแต่ละระบบปฏิบัติการ (win, mac, linux)
ในการใช้เวอร์ชันเนทีฟของ sqlite-jdbc ผู้ใช้ต้องตั้งค่าพา ธ ไปยังเนทีฟโค้ด (dll, jnilib ดังนั้นไฟล์ซึ่งเป็นโปรแกรม JNDI C) โดยใช้อาร์กิวเมนต์บรรทัดคำสั่งเช่น -Djava.library.path = (พา ธ ไปยัง dll, jnilib, ฯลฯ ) หรือ -Dorg.sqlite.lib.path เป็นต้นกระบวนการนี้ผิดพลาดง่ายและน่ารำคาญที่จะบอกผู้ใช้ทุกคนให้ตั้งค่าตัวแปรเหล่านี้ ห้องสมุด SQLiteJDBC ของเราสามารถขจัดความไม่สะดวกเหล่านี้ได้อย่างสมบูรณ์
ข้อแตกต่างอีกประการหนึ่งคือเรากำลังรักษา SQLiteJDBC libray ให้เป็นรุ่นล่าสุดของเอ็นจิน SQLite อยู่เสมอเพราะเราเป็นหนึ่งในผู้ใช้ที่ร้อนแรงที่สุดของห้องสมุดนี้ ตัวอย่างเช่น SQLite JDBC เป็นส่วนประกอบหลักของชุดเครื่องมือ UTGB (มหาวิทยาลัยโตเกียวจีโนมเบราว์เซอร์) ซึ่งเป็นยูทิลิตี้ของเราในการสร้างเบราว์เซอร์จีโนมส่วนบุคคล
แก้ไข : ตามปกติเมื่อคุณอัปเดตบางสิ่งบางอย่างจะมีปัญหาในบางสถานที่คลุมเครือในรหัสของคุณ (เกิดขึ้นกับฉัน) ทดสอบทดสอบทดสอบ =)
sqlite-jdbc
โครงการเป็นสิ่งที่ดี แต่ทราบว่ามันเป็นอาปาเช่ได้รับใบอนุญาต ดังนั้นคุณต้องระบุที่มาหากคุณใช้ไม่ว่ารหัสของคุณจะเป็น FOSS หรือเป็นกรรมสิทธิ์
มีโครงการใหม่SQLJetที่เป็นการใช้งานจาวาบริสุทธิ์ของ SQLite ยังไม่รองรับฟีเจอร์ SQLite ทั้งหมด แต่อาจเป็นตัวเลือกที่ดีมากสำหรับบางโครงการ Java ที่ทำงานกับฐานข้อมูล SQLite
โพสต์ของเบอร์นีมีประโยชน์มาก ไม่สามารถลงคะแนนได้ (มีชื่อเสียงไม่มากพอ :() แต่มันช่วยได้มากแค่ย้ำ!
http://www.zentus.com/sqlitejdbc/
ที่นี่คุณสามารถค้นหา jar ล่าสุดของ SQLite JDBC เพียงเพิ่มเหยือกใน classpath ของคุณและคุณทำเสร็จแล้ว! :) คุณสามารถเรียกใช้โค้ดตัวอย่างของเบอร์นีเพื่อทดสอบว่าทุกอย่างเรียบร้อยดีหรือไม่
http://souptonuts.sourceforge.net/readme_sqlite_tutorial.html http://www.sqlite.org/lang.html
ที่นี่คุณสามารถค้นหาความช่วยเหลือเกี่ยวกับไวยากรณ์ SQL สำหรับ SQLite เชียร์กับ SQLite :)
เมื่อคุณรวบรวมและเรียกใช้รหัสคุณควรตั้งค่าตัวเลือก classpath เหมือนดังต่อไปนี้:
javac -classpath .;sqlitejdbc-v056.jar Text.java
java -classpath .;sqlitejdbc-v056.jar Text
โปรดใส่ใจกับ "." และ sparate ";" (ชนะ linux คือ ":")
โค้ดตัวอย่างนำไปสู่การรั่วไหลของหน่วยความจำใน Tomcat (หลังจากยกเลิกการปรับใช้ webapp แล้ว classloader ยังคงอยู่ในหน่วยความจำ) ซึ่งจะทำให้เกิดขึ้นoutofmemory
ในที่สุด วิธีการที่จะแก้ปัญหาได้คือการใช้SQLite-JDBC-3.7.8.jar ; มันเป็นสแน๊ปช็อตดังนั้นมันจึงยังไม่ปรากฏให้เห็นใน maven
สะกดผิด: java -cp .:sqlitejdbc-v056.jar Test
ควรจะเป็น: java -cp .:sqlitejdbc-v056.jar; Test
สังเกตุอัฒภาคหลังจาก ".jar" ฉันหวังว่าจะช่วยให้ผู้คนสามารถทำให้เกิดความยุ่งยากมาก
.:xxx.jar;
ไม่สมเหตุสมผล และคุณต้องระบุชื่อแพ็คเกจสำหรับคลาส Test