zoukankan      html  css  js  c++  java
  • ORMLite配置异常处理

    转载请保留链接http://www.cnblogs.com/bxfx111/p/5035402.html 

    ORMLite使用方法这里不再说了,给出两个大牛链接自己看去:

    http://blog.csdn.net/lmj623565791/article/details/39121377

    http://blog.csdn.net/oyangyujun/article/details/45621917

    本文主要针对ormlite生成配置文件的时候有时候的报错,比如:

     Exception in thread "main" java.io.FileNotFoundException: rawormlite_config.txt (系统找不到指定的路径。)

    Could not find raw directory which is typically in the res directory

    那就需要配置好运行内容

     http://stackoverflow.com/questions/17298773/android-studio-run-configuration-for-ormlite-config-generation

    本人方式如下:

    ormlite基本配置

    OrmLiteSqliteOpenHelper代码如下:
     1 package com.xvli.dao;
     2 
     3 import android.content.Context;
     4 import android.database.sqlite.SQLiteDatabase;
     5 
     6 import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
     7 import com.j256.ormlite.dao.RuntimeExceptionDao;
     8 import com.j256.ormlite.support.ConnectionSource;
     9 import com.j256.ormlite.table.TableUtils;
    10 import com.xvli.bean.BranchVo;
    11 import com.xvli.bean.LoginVo;
    12 import com.xvli.pda.R;
    13 
    14 import java.sql.SQLException;
    15 import java.util.HashMap;
    16 import java.util.Map;
    17 
    18 /**
    19  * Created by Administrator on 2015/12/7.
    20  */
    21 public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
    22 
    23     /**
    24      * 数据库名
    25      */
    26     private static final String TABLE_NAME = "sqlite-test.db";
    27     /**
    28      * 数据库版本
    29      */
    30     private static final int DATABASE_VERSION = 1;
    31     private static DatabaseHelper instance;
    32 
    33     public DatabaseHelper(Context context) {
    34 //        super(context, TABLE_NAME, null, DATABASE_VERSION);
    35         super(context,TABLE_NAME,null,DATABASE_VERSION,R.raw.ormlite_config);
    36     }
    37 
    38     /**
    39      * 创建数据库
    40      * 只有没有对应表的时候才会创建
    41      * @param database
    42      * @param connectionSource
    43      */
    44     @Override
    45     public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
    46         try {
    47             TableUtils.createTable(connectionSource, LoginVo.class);
    48             TableUtils.createTable(connectionSource, BranchVo.class);
    49         } catch (SQLException e) {
    50             e.printStackTrace();
    51         }
    52     }
    53 
    54     @Override
    55     public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
    56         try {
    57             TableUtils.dropTable(connectionSource, LoginVo.class, true);
    58             TableUtils.dropTable(connectionSource, BranchVo.class, true);
    59             // after we drop the old databases, we create the new ones
    60             onCreate(database, connectionSource);
    61         } catch (SQLException e) {
    62             e.printStackTrace();
    63         }
    64     }
    65 
    66     @Override
    67     public void close() {
    68         super.close();
    69     }
    70 }

    生成数据库配置文件如下

    1.  先在res/raw下创建文件ormlite_config.txt
    2.  继承OrmLiteCongifUtil类创建DatabaseConfigUtil工具了类,这个工具类用于生成数据库结构信息。
    package com.xvli.utils;
    
    import com.j256.ormlite.android.apptools.OrmLiteConfigUtil;
    import com.xvli.bean.BranchVo;
    import com.xvli.bean.LoginVo;
    
    import java.io.File;
    import java.io.IOException;
    import java.sql.SQLException;
    
    /**
     * Created by Administrator on 2015/12/9.
     */
    public class DatabaseConfigUtil extends OrmLiteConfigUtil {
        private static final Class<?>[] classes = new Class[]{
                LoginVo.class, BranchVo.class
        };
    
        public static void main(String[] args) throws IOException, SQLException {
    //        writeConfigFile("ormlite_config.txt", classes);
            writeConfigFile(new File("ormlite_config.txt"), classes);
    
        }
    }

    一、Android studio 的配置(本人测试花了点时间)

    1、打开Edit Configuration

    edit configuration

    2、把Working directory的内容改为$MODULE_DIR$/src/main/res/raw

    这里注意上面的raw文件夹下就是对应的 ormlite_config.txt 文件,保持对应关系才能不报错找不到文件。

    3、把Before launch中的Make删掉或者Make,no error check,这里是修改不建议删除掉,本人测试有问题,建议修改成Make,no error check,自己切换下试试就好

    这样就不会找不到路径了。

    运行吧

    运行成功后下图有样本

    二、在eclipse中运行的话配置如下(这里借鉴了别人的图,但是测试过可行):

    选择JRE,选中Alternate JRE,指定使用的JRE版本,官方文档中说1.5或者1.6,当然,高版本也是可以的。
    选择Classpath,选中Bootstrap Entries下的android,remove掉。切记保留User Entries下的文件。否则会报NoClassDefFoundError, 这里其实就是取消android应用程序的入口,直接将上面的工具类作为程序入口。
    下面是我跑起来的效果
    #
    # generated on 2015/12/10 10:34:06
    #
    # --table-start--
    dataClass=com.xvli.bean.LoginVo
    tableName=t_ATM_User
    # --table-fields-start--
    # --field-start--
    fieldName=ids
    generatedId=true
    # --field-end--
    # --field-start--
    fieldName=clientid
    # --field-end--
    # --field-start--
    fieldName=name1
    # --field-end--
    # --field-start--
    fieldName=name2
    # --field-end--
    # --field-start--
    fieldName=name3
    # --field-end--
    # --field-start--
    fieldName=pwd1
    # --field-end--
    # --field-start--
    fieldName=pwd2
    # --field-end--
    # --field-start--
    fieldName=pwd3
    # --field-end--
    # --field-start--
    fieldName=jobnumber1
    # --field-end--
    # --field-start--
    fieldName=jobnumber2
    # --field-end--
    # --field-start--
    fieldName=jobnumber3
    # --field-end--
    # --field-start--
    fieldName=department1
    # --field-end--
    # --field-start--
    fieldName=department2
    # --field-end--
    # --field-start--
    fieldName=department3
    # --field-end--
    # --field-start--
    fieldName=truckcode
    # --field-end--
    # --field-start--
    fieldName=platenumber
    # --field-end--
    # --field-start--
    fieldName=user1logintime
    # --field-end--
    # --field-start--
    fieldName=user2logintime
    # --field-end--
    # --field-start--
    fieldName=user3logintime
    # --field-end--
    # --field-start--
    fieldName=bindtruckcode
    # --field-end--
    # --field-start--
    fieldName=bindplatenumber
    # --field-end--
    # --field-start--
    fieldName=bindtime
    # --field-end--
    # --field-start--
    fieldName=bindtruck_stuts
    # --field-end--
    # --field-start--
    fieldName=local_login_time
    # --field-end--
    # --field-start--
    fieldName=local_task_time
    # --field-end--
    # --table-fields-end--
    # --table-end--
    #################################
    # --table-start--
    dataClass=com.xvli.bean.BranchVo
    tableName=T_ATM_BranchVo
    # --table-fields-start--
    # --field-start--
    fieldName=ids
    generatedId=true
    # --field-end--
    # --field-start--
    fieldName=id
    # --field-end--
    # --field-start--
    fieldName=code
    # --field-end--
    # --field-start--
    fieldName=name
    # --field-end--
    # --field-start--
    fieldName=customerid
    # --field-end--
    # --field-start--
    fieldName=type
    # --field-end--
    # --field-start--
    fieldName=districts
    # --field-end--
    # --field-start--
    fieldName=atmno
    # --field-end--
    # --field-start--
    fieldName=address
    # --field-end--
    # --field-start--
    fieldName=remarks
    # --field-end--
    # --field-start--
    fieldName=gisx
    # --field-end--
    # --field-start--
    fieldName=gisy
    # --field-end--
    # --field-start--
    fieldName=clientid
    # --field-end--
    # --field-start--
    fieldName=barcode
    # --field-end--
    # --field-start--
    fieldName=taskid
    # --field-end--
    # --field-start--
    fieldName=isnetdone
    # --field-end--
    # --table-fields-end--
    # --table-end--
    #################################
     
     
     
     
     
  • 相关阅读:
    git如何将一个远程仓库的某个分支拉取到当前分支?
    linux下如何检查内核补丁是否符合社区代码规范?
    javascript快速入门20--Cookie
    javascript快速入门19--定位
    javascript快速入门18--样式
    javascript快速入门17--事件
    javascript快速入门16--表格
    javascript快速入门15--表单
    javascript快速入门15--节点
    javascript快速入门14--DOM基础
  • 原文地址:https://www.cnblogs.com/bxfx111/p/5035402.html
Copyright © 2011-2022 走看看