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--
#################################
 
 
 
 
 
原文地址:https://www.cnblogs.com/bxfx111/p/5035402.html