博客详情

sqlite数据库介绍 (原创)

作者: 朝如青丝暮成雪
发布时间:2019-08-28 09:53:58  文章分类:java编程   阅读(923)  评论(0)
一、什么是sqlte?
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。



二、为什么要使用sqlite,sqlte的特性
1、sqlite 不需要一个单独的服务器进程或操作的系统(无服务器的)。
2、SQLite 不需要配置,这意味着不需要安装或管理。
3、一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
4、SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
5、SQLite 是自给自足的,这意味着不需要任何外部的依赖。
6、SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
7、SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
8、SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
9、SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。




三、windows中安装sqlite
在sqlite官网下载 sqlite-dll-win32-x86-*.zip和sqlite-tools-win32-x86-*.zip
在d盘中创建一个sqlite3目录,将上述两个压缩包中的文件都解压到d:/sqlite3目录中,
编辑系统变量,找到path,在最后加上d:/sqlite3 即可。

sqlite3.zip(win32完整包 百度网盘下载)
链接:https://pan.baidu.com/s/1L6ypBHynqXH5zW_hbaNXTQ 
提取码:mein 

sqlitestudio 图形化客户端: 
链接:https://pan.baidu.com/s/1wrPrP6V9S3xJMUCz1OX6LQ 
提取码:wxdz  


四、linux(centos)中安装sqlite
 大部分linux的发行版本中都可以默认安装了sqlite,直接输入sqlite3可进入sqlite的命令行交互终端,否则说明系统没有安装。如果linux中没有安装sqlite,可以参考官网进行安装。

tar xvzf sqlite-autoconf-3071502.tar.gz
cd sqlite-autoconf-3071502
./configure --prefix=/usr/local
make
make install


五、sqlite命令终端常用命令


sqlite3   [回车] 进入命令行交互终端

.mode list 
.mode column
.header on 
.header off 
.databases  -- 查看有哪些数据库
.tables    -- 查看有哪些表

.shcema   表名  -- 查看表DDL语句

.exit 或 .quit  表示退出终端


两个特殊的表 sqlite_master 、sqlite_sequence
select * from  sqlite_master ;  -- sqlite的系统表
select * from sqlite_sequence ; -- 这个表中包含了name和seq两个字段,用来存储每个表的自增序号

例如,查询数据库中是否存在t_student表,如果数量为1则有,否则无
select count(*) from sqlite_master m where m.type='table' and m.name='t_student';


注意:DELETE FROM table_name 这种方法无法将递增数归零,如果要将递增数归零,还需要执行以下命令:
DELETE FROM sqlite_sequence WHERE name = 'table_name';


六、java中使用jdbc操作sqlite数据库


pom.xml中引入依赖(Sqlite的jdbc驱动)

<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.25.2</version>
    </dependency>

DbUitl.java


package com.tingcream.sqlitedemo.util;


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

public class DBUtil {

    private static  String dbUrl="jdbc:sqlite:d:/test.db";
    private static  String dbDriverClassName="org.sqlite.JDBC";//驱动名称


//    private static  String dbUrl="jdbc:mysql://localhost:3306/myDB?useUnicode=true&characterEncoding=UTF8&useSSL=false";
//    private static String dbUsername="root";//用户名
//    private static String dbPassword="123456";//密码
//    private static  String dbDriverClassName="com.mysql.jdbc.Driver";//驱动名称


    //获取数据库连接
    public static Connection  getConn() throws SQLException, ClassNotFoundException {
        Class.forName(dbDriverClassName);
//        Connection conn=DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
        Connection conn=DriverManager.getConnection(dbUrl);
        return conn ;
    }
    //关闭数据库连接
    public static void closeConn(Connection conn) throws SQLException{
        if(conn!=null){
            conn.close();
        }
    }


    public static void main(String[] args)  throws Exception{
        testConn();//测试连接ok

    }


    /**
     * 测试连接 ok
     * @throws Exception
     */
    private  static void  testConn()throws Exception{
        Connection conn=null;
        try {
            conn=getConn();
            System.out.println("获取数据库连接成功");
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("获取数据库连接失败");
        }finally{
            closeConn(conn);
        }
    }
}


Demo1.java


package com.tingcream.sqlitedemo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Demo1 {

    /**
     * 创建或打开一个sqlite数据库
     * @param args
     */
    public static void main(String[] args) {
        Connection conn=null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:d:/test.db");
            System.out.println("打开数据库成功");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("打开数据库失败");
        }finally{
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


Demo2.java


package com.tingcream.sqlitedemo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;


public class Demo2 {
    /**
     * 打开数据库,创建一个表
     * @param args
     */
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:d:/test.db");

            String sql = "create  table t_student(\n" +
                    "id  integer primary key autoincrement not null ,\n" +
                    "name varchar,\n" +
                    "sex  int ,\n" +
                    "birthday varchar,\n" +
                    "address varchar,\n" +
                    "createTime  varchar\n" +
                    ");";
           ps = conn.prepareStatement(sql);


           ps.executeUpdate();
            System.out.println("ok");

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


Demo3.java


package com.tingcream.sqlitedemo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;


public class Demo3 {

    /**
     * 插入一些数据
     *
     * @param args
     */
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:d:/test.db");

            String sql = "insert into t_student(name,sex,birthday,address,createTime) values\n" +
                    "('张三',1,'1993-03-23','北京','2019-08-27 14:20:20'),\n" +
                    "('李四',2,'1993-03-25','南京','2019-08-27 14:20:24'),\n" +
                    "('王五',1,'1993-04-27','北京','2019-08-27 14:21:20'),\n" +
                    "('张三丰',1,'1993-02-23','广州','2019-08-27 14:25:20');";
            ps = conn.prepareStatement(sql);

            ps.executeUpdate();
            System.out.println("ok");

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            if (ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


Demo4.java


package com.tingcream.sqlitedemo;

import com.tingcream.sqlitedemo.model.Student;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class Demo4 {

    /**
     * 查询t_student表所有数据
     *
     * @param args
     */
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:d:/test.db");

            String sql = "select * from t_student";

            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);

            List<Student> list = new ArrayList<>();
            while (rs.next()) {
                Student stu = new Student();
                stu.setId(rs.getInt("id"));
                stu.setName(rs.getString("name"));
                stu.setAddress(rs.getString("address"));
                stu.setBirthday(rs.getString("birthday"));
                stu.setCreateTime(rs.getString("createTime"));
                stu.setSex(rs.getInt("sex"));

                list.add(stu);
            }
            System.out.println(list);
            System.out.println("ok");
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }

}


Student.java


package com.tingcream.sqlitedemo.model;

import java.io.Serializable;


public class Student  implements Serializable {


    private Integer id ;//主键id 自增
    private  String name;//姓名
    private  Integer  sex;//性别 1男 2女
    private  String birthday;//生日
    private  String address;//地址
    private  String createTime;//创建时间

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name=" + name +
                ", sex=" + sex +
                ", birthday=" + birthday +
                ", address=" + address +
                ", createTime=" + createTime +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
}
 







关键字:  sqlite  jdbc
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号