`
兢兢业业小码农
  • 浏览: 5850 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

sqlite web配置注意事项

阅读更多

1.环境

a.Spring 4.1.4.RELEASE

b.sqlite3

c.maven3

d.sqlite-jdbc 3.8.11.2

2.遇到问题

1.方言找不到

2.org.sqlite.JDBC找不到

3.想把数据库文件放到相对路径下

3.解决方案

1.官方貌似没有方言文件,大都是DIY的,自己找到一篇,生成之后配到方言中

 

package com.fh.server.util;

/*
 * The author disclaims copyright to this source code. In place of
 * a legal notice, here is a blessing:
 * 
 * May you do good and not evil.
 * May you find forgiveness for yourself and forgive others.
 * May you share freely, never taking more than you give.
 *
 */
import java.sql.Types;

import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.type.StandardBasicTypes;
 
public class SQLiteDialect extends Dialect {
    public SQLiteDialect() {
        super();
        registerColumnType(Types.BIT, "integer");
        registerColumnType(Types.TINYINT, "tinyint");
        registerColumnType(Types.SMALLINT, "smallint");
        registerColumnType(Types.INTEGER, "integer");
        registerColumnType(Types.BIGINT, "bigint");
        registerColumnType(Types.FLOAT, "float");
        registerColumnType(Types.REAL, "real");
        registerColumnType(Types.DOUBLE, "double");
        registerColumnType(Types.NUMERIC, "numeric");
        registerColumnType(Types.DECIMAL, "decimal");
        registerColumnType(Types.CHAR, "char");
        registerColumnType(Types.VARCHAR, "varchar");
        registerColumnType(Types.LONGVARCHAR, "longvarchar");
        registerColumnType(Types.DATE, "date");
        registerColumnType(Types.TIME, "time");
        registerColumnType(Types.TIMESTAMP, "timestamp");
        registerColumnType(Types.BINARY, "blob");
        registerColumnType(Types.VARBINARY, "blob");
        registerColumnType(Types.LONGVARBINARY, "blob");
        // registerColumnType(Types.NULL, "null");
        registerColumnType(Types.BLOB, "blob");
        registerColumnType(Types.CLOB, "clob");
        registerColumnType(Types.BOOLEAN, "integer");
 
        registerFunction("concat", new VarArgsSQLFunction(StandardBasicTypes.STRING, "",
                "||", ""));
        registerFunction("mod", new SQLFunctionTemplate(StandardBasicTypes.INTEGER,
                "?1 % ?2"));
        registerFunction("substr", new StandardSQLFunction("substr",
        		StandardBasicTypes.STRING));
        registerFunction("substring", new StandardSQLFunction("substr",
        		StandardBasicTypes.STRING));
    }
 
    public boolean supportsIdentityColumns() {
        return true;
    }
 
    /*
     public boolean supportsInsertSelectIdentity() {
     return true; // As specify in NHibernate dialect
     }
     */
 
    public boolean hasDataTypeInIdentityColumn() {
        return false; // As specify in NHibernate dialect
    }
 
    /*
     public String appendIdentitySelectToInsert(String insertString) {
     return new StringBuffer(insertString.length()+30). // As specify in NHibernate dialect
     append(insertString).
     append("; ").append(getIdentitySelectString()).
     toString();
     }
     */
 
    public String getIdentityColumnString() {
        // return "integer primary key autoincrement";
        return "integer";
    }
 
    public String getIdentitySelectString() {
        return "select last_insert_rowid()";
    }
 
    public boolean supportsLimit() {
        return true;
    }
 
    public String getLimitString(String query, boolean hasOffset) {
        return new StringBuffer(query.length() + 20).append(query).append(
                hasOffset ? " limit ? offset ?" : " limit ?").toString();
    }
 
    public boolean supportsTemporaryTables() {
        return true;
    }
 
    public String getCreateTemporaryTableString() {
        return "create temporary table if not exists";
    }
 
    public boolean dropTemporaryTableAfterUse() {
        return false;
    }
 
    public boolean supportsCurrentTimestampSelection() {
        return true;
    }
 
    public boolean isCurrentTimestampSelectStringCallable() {
        return false;
    }
 
    public String getCurrentTimestampSelectString() {
        return "select current_timestamp";
    }
 
    public boolean supportsUnionAll() {
        return true;
    }
 
    public boolean hasAlterTable() {
        return false; // As specify in NHibernate dialect
    }
 
    public boolean dropConstraints() {
        return false;
    }
 
    public String getAddColumnString() {
        return "add column";
    }
 
    public String getForUpdateString() {
        return "";
    }
 
    public boolean supportsOuterJoinForUpdate() {
        return false;
    }
 
    public String getDropForeignKeyString() {
        throw new UnsupportedOperationException(
                "No drop foreign key syntax supported by SQLiteDialect");
    }
 
    public String getAddForeignKeyConstraintString(String constraintName,
            String[] foreignKey, String referencedTable, String[] primaryKey,
            boolean referencesPrimaryKey) {
        throw new UnsupportedOperationException(
                "No add foreign key syntax supported by SQLiteDialect");
    }
 
    public String getAddPrimaryKeyConstraintString(String constraintName) {
        throw new UnsupportedOperationException(
                "No add primary key syntax supported by SQLiteDialect");
    }
 
    public boolean supportsIfExistsBeforeTableName() {
        return true;
    }
 
    public boolean supportsCascadeDelete() {
        return false;
    }
     
    /**
     * 修复分页bug
     * @author Z.kc
     */
    @Override
    public boolean bindLimitParametersInReverseOrder() {
        return true;
    }
}

 

 

2.把jar包扔到tomcat/lib下就好了

3.传说中配置url用resource::指定就可以了,然而并没有什么卵用,不知道是不是RP问题,配置文件贴下仅供参考

 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
            destroy-method="close"> 
        <property name="driverClassName" value="org.sqlite.JDBC" /> 
        <property name="url" value="jdbc:sqlite::resource:vote.db" />
        <property name="maxIdle" value="10"/>
        <property name="maxActive" value="100"/>
        <property name="maxWait" value="10000"/>
        <property name="validationQuery" value="select 1"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testWhileIdle" value="true"/>
        <property name="timeBetweenEvictionRunsMillis" value="1200000"/>
        <property name="minEvictableIdleTimeMillis" value="1800000"/>
        <property name="numTestsPerEvictionRun" value="5"/>
        <property name="defaultAutoCommit" value="true"/>
    </bean>

 4.引用文章什么的找不到了,先鸣谢,下次找到补上

 

 

分享到:
评论

相关推荐

    PHP.SQLite的配置使用

    - **使用说明文档.txt**:包含了详细的PHPSQLite使用指南,包括示例代码和注意事项。 - **php100-71.wmv**:可能是一个视频教程,通过实例演示如何在PHP中配置和操作SQLite数据库。 通过深入学习这些资源,你可以更...

    SpringMVC+sqlitejdbc的jar集合

    **注意事项** - SQLite不支持多线程写入,所以在并发较高的场景下可能不是最佳选择。 - 虽然SQLiteJDBC能简化数据库操作,但它的性能和功能可能不如大型数据库系统如MySQL或Oracle。 - 使用SpringMVC时,合理配置...

    JMter连接sqlite.zip

    《JMeter连接SQLite数据库的详细步骤与注意事项》 在软件测试和性能测试领域,Apache JMeter是一款广泛应用的开源工具,它主要用于对Web应用进行压力和负载测试。然而,JMeter默认并不支持SQLite数据库的直接连接,...

    小工具框架,electron+sqlite

    例如,可以创建一个简单的待办事项应用,用户界面由 HTML 和 CSS 构建,JavaScript 代码处理用户的交互,如添加、删除任务,而所有这些任务数据都存储在 SQLite 数据库中。 在开发过程中,需要注意以下几点: 1. *...

    Spring+mybatis+sqlite/mysql

    六、注意事项 1. 数据库版本兼容:不同的数据库可能对SQL语法有不同的支持,确保SQL语句兼容所选数据库。 2. 异常处理:合理捕获并处理数据库操作中的异常,提供友好的错误信息。 3. 性能优化:根据项目需求,考虑...

    arm+linux+apache+php+sqlite

    - **注意事项**: - 在现有的Apache服务器上可能不支持PHP5扩展。如果尝试在httpd.conf中添加`LoadModule php5_module modules/libphp5.so`,可能会遇到错误提示:“Syntax error on line 233 of /usr/conf/httpd....

    JSP源码——JSP_JTBC_CMS(SQLITE).zip

    在该压缩包中,readme.png可能是项目的一份简要介绍或指南,通常包含重要的安装步骤、使用注意事项以及可能的系统需求。而_install.txt文件很可能是详细的安装步骤文本,用户可以通过阅读这个文件来了解如何配置和...

    PHP100视频教程71:PHP.SQLite.的使用和配置.rar

    使用注意事项 - SQLite不支持多用户同时写入,因此在高并发环境下可能不是最佳选择。 - 数据库文件是文本格式,容易被读取,对敏感数据应加密处理。 - 没有自动维护的索引,可能需要手动创建和优化。 通过本教程...

    SQlite3.66

    而`CodePub.Com说明.txt`文件可能是提供关于如何使用SQLite3.66或者这个特定打包的一些额外说明,包括安装步骤、使用教程、注意事项等。用户应仔细阅读该文件以获取更具体的使用指南。 在实际应用中,SQLite常用于...

    Datebase.rar_VC sqlite3_datebese

    8. **安全注意事项**: - 定期备份数据库,以防数据丢失。 - 对敏感信息进行加密,保护数据安全。 - 适当地处理SQL注入风险,避免未验证的用户输入直接构造SQL语句。 9. **调试与测试**: 使用Visual Studio的...

    PHP实例开发源码—php+sqlite响应式手机文章管理系统.zip

    “使用须知.txt”可能是对系统使用、安装步骤或注意事项的说明文档,帮助用户了解如何正确部署和运行此系统。而“132676244056243678”可能是一个数据库文件,包含了预设的数据或者系统配置信息。 6. 安全性: 在...

    DjangoWeb安装说明文档(2020-01-23)1

    了解其使用方法,包括启动Sender,掌握重要附属文件的作用,理解PNL计算流程,并注意使用过程中的注意事项,以确保数据的准确传输。 项目文件依赖关系需清晰了解。例如,json数据文件路径的配置,以及策略管理层级...

    PHPWEB智能网站管理系统 1.4.0 UTF-8 简体中文版

    1. `Readme-说明.htm`:包含详细的系统介绍和使用注意事项,是了解系统功能和操作的重要参考资料。 2. `PHPWEB安装方法.txt`:提供了详细的安装步骤和常见问题解答,帮助用户顺利完成系统部署。 3. `PHPWEB智能网站...

    SPICE-Web-based-SCADA-system-:监控集成控制系统 (SCADA)

    安装注意事项: 需要支持 PHP 的 Web 服务器(例如 IIS) 将内容复制到 wwwroot(或等效)文件夹中 运行服务器: php SpiceServer\Server\SpireServer.php 使用浏览器 url 运行客户端:...

    Trac0.12搭建&插件&注意点

    总的来说,Trac 0.12的搭建和配置可能需要一定的技术基础,但只要按照正确步骤操作并留意上述注意事项,你就能成功建立一个强大的项目管理平台。文档`Trac环境搭建说明_UpLoad.doc`应包含更详细的步骤和具体配置示例...

    JTBC网站内容管理系统(JSP) v2.0.0.3 SQLITE版-源码.zip

    1. "使用前必看.htm" - 这通常是一个重要的文档,包含了使用该系统前需要注意的事项、安装步骤或者系统配置要求等关键信息。开发者和管理员应该仔细阅读以确保正确无误地部署和运行系统。 2. "内容来自存起来软件站...

    本地php一键式搭建

    "安装必看.txt"可能是包含安装提示和注意事项的文本文件,用户在安装前应该仔细阅读以确保顺利进行。"173绿色软件下载.url"则是一个快捷方式或书签,指向一个软件下载网站,可能是推荐的其他相关工具或者更新的下载...

    Apache+Trac配置

    **注意事项**: - 需要在运行`trac-admin initenv`之前创建好PostgreSQL数据库。 - 确保PostgreSQL数据库名为`trac`。 初始化完成后,可以看到Trac环境已经创建完成。 ##### 4. 配置Apache - 编辑Apache的...

    MVCWebMis_Deploy

    7. **安装说明.txt**:这个文本文件提供了项目部署的具体步骤和注意事项,对于首次接触该项目的人来说,它是指导部署的重要参考资料。 8. **aspnet_client**:这个目录包含了ASP.NET自动生成的客户端脚本文件,用于...

Global site tag (gtag.js) - Google Analytics