正在相菜鳥進發,修煉中......java程序訪問Sqlite數據庫

新建一個數據庫

庫名爲:company,表名:employee,設置字段以及添加的內容如下:



新建一個Employee類

接下來就是編寫相對應的Employee對象,對象中的字段要和數據庫裏的字段一一對應,代碼:
package com.bzu.db;

public class Employee {
	private int id;//id
	private String name;//姓名
	private String pwd;//密碼
	private int age;//年齡
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	//無參構造方法
	public Employee() {
		super();
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	//帶相應字段參數的構造方法
	public Employee(int id, String name, String pwd, int age) {
		super();
		this.id = id;
		this.name = name;
		this.pwd = pwd;
		this.age = age;
	}
	
	
	
}

新建一個DbTest測試類

package com.bzu.db;

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 DbTest {
	public static void main(String[] args) {
		List<Employee> list=fetchData();
		System.out.println("從數據查詢到的數據");
		for(Employee e:list){
			System.out.println(e);
		}
		//設置默認登錄字段
		Employee employee=login("jack", "123");
		if(employee!=null){
			System.out.println("登錄成功:"+employee.getName());
		}else{
			System.out.println("請重新登錄!");
		}
	}
	//員工登錄
	private static Employee login(String name,String pwd){
		Employee employee=null;
		Connection conn=null;
		try {
			//第一步:加載驅動程序
			Class.forName("org.sqlite.JDBC");
			//第二步:於數據庫建立連接
			conn=DriverManager.getConnection("jdbc:sqlite:d:/company.db");
			//Statement第二種方法,防止SQL注入的病毒攻擊
			// 創建一個 PreparedStatement 對象來將參數化的 SQL 語句發送到數據庫。
			PreparedStatement ps=conn.prepareStatement(" select * from employee where name=? and pwd=? ");
			//賦值給第一個?name
			ps.setString(1, name);
			ps.setString(2, pwd);
			//在此 PreparedStatement 對象中執行 SQL 查詢,並返回該查詢生成的 ResultSet 對象。
			ResultSet rs=ps.executeQuery();
			if(rs.next()){
				employee=new Employee(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(4));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			if(conn!=null){
				try {
					conn.close();//釋放資源
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return employee;
	}
	private static List<Employee> fetchData() {
		List<Employee> list=new ArrayList<Employee>();
		Employee employee=null;
		Connection conn=null;
		try {
			//第一步:加載驅動程序
			Class.forName("org.sqlite.JDBC");
			//第二步:於數據庫建立連接
			conn=DriverManager.getConnection("jdbc:sqlite:d:/company.db");
			//創建一個 Statement 對象來將 SQL 語句發送到數據庫。
			Statement sm=conn.createStatement();
			//Sql語句
			String sqlString=" select * from employee ";
			//執行給定的 SQL 語句,該語句返回單個 ResultSet 對象。
			ResultSet rs=sm.executeQuery(sqlString);
			while(rs.next()){
				employee=new Employee(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(4));
				list.add(employee);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			//判斷鏈接的關閉
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return list;
	}
}


注意:

導入salite-jdbc.jar包,  此訪問數據庫要第三方驅動,所以要將sqlite-jdbc.jar包導入相應的項目中,其實挺簡單的,怎麼導入我覺的應該自己從網上查下,現在網絡資源這麼豐富.

有很多不足的地方,我查了相關sqlite數據庫的相關知識,現在數據庫查詢有相關的支持框架,可以很方便的不用書寫SQL命令就能調用數據庫的一些操作命令,正在研究中......................


發佈了36 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章