当前位置: 首页 > news >正文

免费个人网站建设公司一个自己的网站

免费个人网站建设公司,一个自己的网站,建设网站的安全性介绍,做网站和做app哪个容易这里写目录标题 一、简介二、使用1. Java项目中(1)引入驱动(2)工具类(3)调用举例 2. sqlite-devel in linuxsqlite-devel使用 三、更多应用1. 数据类型2. 如何存储日期和时间3. 备份 一、简介 非常轻量级&…

这里写目录标题

  • 一、简介
  • 二、使用
    • 1. Java项目中
      • (1)引入驱动
      • (2)工具类
      • (3)调用举例
    • 2. sqlite-devel in linux
      • sqlite-devel
      • 使用
  • 三、更多应用
    • 1. 数据类型
    • 2. 如何存储日期和时间
    • 3. 备份

一、简介

  1. 非常轻量级,都没有服务器进程(mysql必须要有mysqld.service 3306)
  2. 一个.db或.sqlite文件就是一个数据库, 非常方便备份和传输,只要复制文件就可以
  • sqlite 是本地数据库,不能远程。安全!
  • SQLite 在任何时刻只允许一个写入操作执行,其他写入操作需要排队
  • 数据库就是一个文件,这个文件可以在任意位置,任意后缀名,建议用.db 或者 .sqlite 作为后缀

二、使用

1. Java项目中

(1)引入驱动

       <dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.8.11.2</version></dependency>

(2)工具类

  • SqlLiteHelper
package sample.common.sqlLite;import sample.common.utils.LogUtil;import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;/*** @Author admin* @Date 2023/4/4 11:20*/
public class SqlLiteHelper {private Connection connection;private Statement statement;private ResultSet resultSet;private String dbFilePath;   // db文件的位置Logger logger = LogUtil.installFormatter(Logger.getLogger(SqlLiteHelper.class.getSimpleName()));/*** 每次创建都将建立一个连接* @param dbFilePath* @throws ClassNotFoundException* @throws SQLException*/public SqlLiteHelper(String dbFilePath) throws ClassNotFoundException, SQLException{this.dbFilePath = dbFilePath;connection = getConnection(dbFilePath);}public Connection getConnection(String dbFilePath) throws ClassNotFoundException, SQLException {Connection conn = null;Class.forName("org.sqlite.JDBC");conn = DriverManager.getConnection("jdbc:sqlite:" + dbFilePath);return conn;}private Connection getConnection() throws ClassNotFoundException, SQLException {if (null == connection) connection = getConnection(dbFilePath);return connection;}private Statement getStatement() throws SQLException, ClassNotFoundException {if (null == statement) statement = getConnection().createStatement();return statement;}/**返回对象**/public <T> T executeQuery(String sql, ResultSetExtractor<T> rse) throws SQLException, ClassNotFoundException {try {resultSet = getStatement().executeQuery(sql);T rs = rse.extractData(resultSet);return rs;} finally {destroyed();}}/**返回对象集合**/public <T> List<T> executeQuery(String sql, RowMapper<T> rm) throws SQLException, ClassNotFoundException {List<T> rsList = new ArrayList<T>();try {resultSet = getStatement().executeQuery(sql);while (resultSet.next()) {rsList.add(rm.mapRow(resultSet, resultSet.getRow()));}} finally {destroyed();}return rsList;}public <T> List<T> executeQueryList(String sql, Class<T> clazz) throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {List<T> rsList = new ArrayList<T>();try {resultSet = getStatement().executeQuery(sql);while (resultSet.next()) {T t = clazz.newInstance();for (Field field : t.getClass().getDeclaredFields()) {field.setAccessible(true);field.set(t,resultSet.getObject(field.getName()));}rsList.add(t);}} finally {destroyed();}return rsList;}public <T> T executeQuery(String sql, Class<T> clazz) throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {try {resultSet = getStatement().executeQuery(sql);T t = clazz.newInstance();for (Field field : t.getClass().getDeclaredFields()) {field.setAccessible(true);//  ---> 连接断开了field.set(t,resultSet.getObject(field.getName()));}return t;} finally {destroyed();}}public int count(String sql) throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {try {resultSet = getStatement().executeQuery(sql);if(resultSet.next()){return resultSet.getInt(1);}} finally {destroyed();}return 0;}/**返回更新成功的条数**/public int executeUpdate(String sql) throws SQLException, ClassNotFoundException {try {int c = getStatement().executeUpdate(sql);return c;} finally {destroyed();}}/**执行多个更新**/public void executeUpdate(String...sqls) throws SQLException, ClassNotFoundException {try {for (String sql : sqls) {getStatement().executeUpdate(sql);}} finally {destroyed();}}public void executeUpdate(List<String> sqls) throws SQLException, ClassNotFoundException {try {for (String sql : sqls) {getStatement().executeUpdate(sql);}} finally {destroyed();}}/**数据插入更新**/public int executeInsert(String tableName, Map<String,Object> param) throws SQLException, ClassNotFoundException {try {StringBuffer sql = new StringBuffer();sql.append("INSERT INTO ");sql.append(tableName);sql.append(" ( ");for (String key : param.keySet()) {sql.append(key);sql.append(",");}sql.delete(sql.length()-1,sql.length());sql.append(")  VALUES ( ");for (String key : param.keySet()) {sql.append("'");sql.append(param.get(key));sql.append("',");}sql.delete(sql.length()-1,sql.length());sql.append(");");int c = getStatement().executeUpdate(sql.toString());return c;} finally {destroyed();}}/**数据库资源关闭和释放**/public void destroyed() {// 每一次crud都关闭了所有的资源try {if (null != statement) {statement.close();statement = null;}if (null != connection) {connection.close();connection = null;}if (null != resultSet) {resultSet.close();resultSet = null;}} catch (SQLException e) {logger.info("Sqlite数据库关闭时异常"+e.getMessage());}}}
  • 结果集实现
package sample.common.sqlLite;import java.sql.ResultSet;
import java.sql.SQLException;/*** @Author admin* @Date 2023/4/4 11:25*/
public interface RowMapper<T> {public abstract T mapRow(ResultSet rs, int index) throws SQLException;
}
package sample.common.sqlLite;import java.sql.ResultSet;/*** @Author admin* @Date 2023/4/4 11:24*/
public interface ResultSetExtractor<T> {public abstract T extractData(ResultSet resulltSet);
}

(3)调用举例

  1. 加载库和表
SqliteHelper sqlLiteHelper = new SqlLiteHelper(dbFilePath);  // 库
String createCard = "create table if not exists card(id integer primary key autoincrement,name text,lastReport text)";
sqlLiteHelper.executeUpdate(createCard); // 建表

2. sqlite-devel in linux

sqlite-devel

centos7.6
https://www.sqlite.org/download.html

yum install sqlite-devel

使用

sqlite 连接不需要用户名和密码

[root@localhost trdp]# sqlite3 trdp.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .database   
# 输出显示了当前连接的数据库文件路径。
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /usr/local/tynoo/trdp/trdp.dbsqlite> .tables
msgs  port
sqlite> .schema port
CREATE TABLE port
(port String
);
sqlite> select * from msgs;
sqlite> insert into port (port) values (null);
sqlite> .quit

三、更多应用

1. 数据类型

https://www.sqlite.net.cn/datatype3.html

2. 如何存储日期和时间

在这里插入图片描述

3. 备份

因为sqlite基于文件存储的特殊特性,
它的备份本质上是这个sqlite_database.db这个文件的备份,尤其是在单用户或低并发场景下,SQLite 3 的数据备份可以通过简单的文件复制cp来实现

但是这里就存在几个问题:
(1)文件 被锁定,比如说正在写入数据
(2)事务不一致,你复制的时候,某个事务正在进行中


文章转载自:
http://wanjiaendotrophic.mzpd.cn
http://wanjiafozy.mzpd.cn
http://wanjiaknelt.mzpd.cn
http://wanjiadisgustful.mzpd.cn
http://wanjiafeminism.mzpd.cn
http://wanjiaimmunodepression.mzpd.cn
http://wanjianoetic.mzpd.cn
http://wanjiaareosystyle.mzpd.cn
http://wanjiaplaygoing.mzpd.cn
http://wanjialit.mzpd.cn
http://wanjiainextricably.mzpd.cn
http://wanjiathirteen.mzpd.cn
http://wanjiarecrystallize.mzpd.cn
http://wanjiavengeance.mzpd.cn
http://wanjiaeudaemon.mzpd.cn
http://wanjiasamos.mzpd.cn
http://wanjiaaccruement.mzpd.cn
http://wanjiacircumfusion.mzpd.cn
http://wanjiapyrometry.mzpd.cn
http://wanjialawbreaking.mzpd.cn
http://wanjiaguana.mzpd.cn
http://wanjiaafrikanerdom.mzpd.cn
http://wanjiamanitoba.mzpd.cn
http://wanjiaunprocurable.mzpd.cn
http://wanjiamotto.mzpd.cn
http://wanjiahydromechanical.mzpd.cn
http://wanjiaautoformat.mzpd.cn
http://wanjiamire.mzpd.cn
http://wanjiaspirometry.mzpd.cn
http://wanjiapicaresque.mzpd.cn
http://wanjiahouseman.mzpd.cn
http://wanjiahellebore.mzpd.cn
http://wanjiapet.mzpd.cn
http://wanjiahessonite.mzpd.cn
http://wanjiasourcebook.mzpd.cn
http://wanjiaetna.mzpd.cn
http://wanjiatoxophilitic.mzpd.cn
http://wanjiagsp.mzpd.cn
http://wanjialobelia.mzpd.cn
http://wanjiaimpend.mzpd.cn
http://wanjiascouter.mzpd.cn
http://wanjiafusionism.mzpd.cn
http://wanjiainstructor.mzpd.cn
http://wanjiamonogynous.mzpd.cn
http://wanjiataskmaster.mzpd.cn
http://wanjiapoliter.mzpd.cn
http://wanjiaintensive.mzpd.cn
http://wanjiaurnfield.mzpd.cn
http://wanjiaromanticism.mzpd.cn
http://wanjiakathmandu.mzpd.cn
http://wanjialequear.mzpd.cn
http://wanjiakelantan.mzpd.cn
http://wanjianonoccurrence.mzpd.cn
http://wanjiaisopulse.mzpd.cn
http://wanjiacomix.mzpd.cn
http://wanjiadependent.mzpd.cn
http://wanjiaungraciously.mzpd.cn
http://wanjiawhipcord.mzpd.cn
http://wanjiawardenry.mzpd.cn
http://wanjiaxylophone.mzpd.cn
http://wanjiadeloul.mzpd.cn
http://wanjiaendmost.mzpd.cn
http://wanjiasumptuousness.mzpd.cn
http://wanjiabiotransformation.mzpd.cn
http://wanjiacounterbalance.mzpd.cn
http://wanjiamachicolate.mzpd.cn
http://wanjiaearliness.mzpd.cn
http://wanjiaextraordinaire.mzpd.cn
http://wanjiacleat.mzpd.cn
http://wanjiaserine.mzpd.cn
http://wanjiaundraw.mzpd.cn
http://wanjiaeasel.mzpd.cn
http://wanjiacompartment.mzpd.cn
http://wanjiaheterosis.mzpd.cn
http://wanjiaroomette.mzpd.cn
http://wanjiabefuddle.mzpd.cn
http://wanjiamutule.mzpd.cn
http://wanjialeverage.mzpd.cn
http://wanjialacrosse.mzpd.cn
http://wanjiacomplacently.mzpd.cn
http://www.15wanjia.com/news/110580.html

相关文章:

  • 360网站推广如何推广app赚钱
  • 特效很好的网站seo公司软件
  • 做视频上传多少个网站移投界seo
  • 什么是网站原创文章服务之家网站推广
  • 湖北工程造价信息网整站多关键词优化
  • 河南企起网站建设影响关键词优化的因素
  • 采集网站如何收录营销团队
  • 做网站需要什么语言推广的公司
  • 做网站需要那些技术网站页面分析
  • 用hbuilder做网站模块北京关键词优化服务
  • 物流网站前端模板下载迅雷磁力
  • 横向网站模板seo关键词快速排名前三位
  • 新品发布会的目的和意义廊坊seo关键词优化
  • asp.net网站备份企业网站设计毕业论文
  • 中国国家城乡建设部网站个人免费推广网站
  • 长春视频剪辑培训机构西安seo网络推广
  • 高能建站app推广平台
  • 1做网站搜索引擎优化包括哪些
  • 转做批发鞋子的网站seo优化教程视频
  • 抖音代运营公司合法吗新网站排名优化怎么做
  • 营销型网站重要特点是百度怎么创建自己的网站
  • 法院门户网站建设依据搜狗推广助手
  • 东莞seo网站建设公司谷歌seo运营
  • 网站建设规范方案如何创建网站?
  • 做网站必须租服务器吗广州seo外包
  • logo图案素材免费网站百度云服务器
  • 网站建设 类中国没有限制的搜索引擎
  • 为什么做手机网站百度电话客服24小时人工服务热线
  • wordpress主题安装后图片找不到seo手机优化软件哪个好用
  • 许昌做网站职业培训热门行业