插入的外键到表 [英] Inserting a foreign key into a table

查看:133
本文介绍了插入的外键到表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何插入的外键到表?我有两个表(信息和WorkDetails),其中WorkDetails具有参考信息的外键。这是实施正确的方法是什么?

MyDatabaseHelper.java

 公共无效的onCreate(SQLiteDatabase DB)
    {
       db.execSQL(CREATE TABLE+ TABLE_INFO +(ID INTEGER PRIMARY KEY,Name文本,天气文本,日期DATETIME,状态文本));
       db.execSQL(CREATE TABLE+ TABLE_WORKDETAILS +(ID INTEGER PRIMARY KEY,项目文本,WorkDescription TEXT,每文本,TimeIn DATETIME,超时DATETIME,TotalHours DATETIME,TableInfo_id INTEGER,外键(TableInfo_id)参考文献TABLE_INFO(ID)) ;
    }

WorkDetailsAPI.java

 公共类WorkDetailsAPI {
    私人SQLiteDatabase数据库;
    私人MyDatabaseHelper dbHelper;
    公众的String [] allColumns={MyDatabaseHelper.ID2,MyDatabaseHelper.Project,MyDatabaseHelper.WorkDescription,MyDatabaseHelper.Per,MyDatabaseHelper.TimeIn,MyDatabaseHelper.TimeOut,MyDatabaseHelper.TotalHours,MyDatabaseHelper.TableInfo_id};    公共WorkDetailsAPI(上下文的背景下)
                   ....
    众长insertWorkDetails(字符串项目,字符串workDescription,每串,串timeIn,超时字符串,字符串totalHours)
    {
        数据库= dbHelper.getWritableDatabase();
        ContentValues​​值=新ContentValues​​();
        values​​.put(MyDatabaseHelper.Project,项目);
        values​​.put(MyDatabaseHelper.WorkDescription,workDescription);
        values​​.put(MyDatabaseHelper.Per,份);
        values​​.put(MyDatabaseHelper.TimeIn,timeIn);
        values​​.put(MyDatabaseHelper.TimeOut,超时);
        values​​.put(MyDatabaseHelper.TotalHours,totalHours);
        database.insert(MyDatabaseHelper.TABLE_WORKDETAILS,空,价值);
        database.close();
        返回0;    }}

WorkDetails.java

 公共无效的add(){
    button.setOnClickListener
        .....
            TI.insertTableInfo(姓名,天气,日期,状态);
            WD.insertWorkDetails(A,B,C,D,E,F); //我需要包括foreign key?
}


解决方案

是你做了正确的方式。

How to insert foreign key into a table? I have two table (Info and WorkDetails) where WorkDetails has a foreign key which refer to Info. Is this the correct way to implement?

MyDatabaseHelper.java

 public void onCreate(SQLiteDatabase db)
    {
       db.execSQL("create table "+TABLE_INFO+"(ID INTEGER PRIMARY KEY ,Name TEXT,Weather TEXT, Date DATETIME, Status Text)");
       db.execSQL("create table"+TABLE_WORKDETAILS+"(ID INTEGER PRIMARY KEY , Project TEXT, WorkDescription TEXT, Per Text, TimeIn DATETIME, TimeOut DATETIME,TotalHours DATETIME, TableInfo_id INTEGER, FOREIGN KEY(TableInfo_id)REFERENCES TABLE_INFO(ID)");
    }

WorkDetailsAPI.java

public class WorkDetailsAPI {
    private SQLiteDatabase database;
    private MyDatabaseHelper dbHelper;
    public String[] allColumns={MyDatabaseHelper.ID2,MyDatabaseHelper.Project,MyDatabaseHelper.WorkDescription,MyDatabaseHelper.Per,MyDatabaseHelper.TimeIn,MyDatabaseHelper.TimeOut,MyDatabaseHelper.TotalHours,MyDatabaseHelper.TableInfo_id};

    public WorkDetailsAPI(Context context)
                   ....
    public long insertWorkDetails(String project, String workDescription, String per,String timeIn,String timeOut,String totalHours)
    {
        database=dbHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put(MyDatabaseHelper.Project,project);
        values.put(MyDatabaseHelper.WorkDescription,workDescription);
        values.put(MyDatabaseHelper.Per,per);
        values.put(MyDatabaseHelper.TimeIn,timeIn);
        values.put(MyDatabaseHelper.TimeOut,timeOut);
        values.put(MyDatabaseHelper.TotalHours,totalHours);
        database.insert(MyDatabaseHelper.TABLE_WORKDETAILS,null,values);
        database.close();
        return 0 ;

    }

}

WorkDetails.java

public void add() {
    button.setOnClickListener
        .....
            TI.insertTableInfo(name,weather,date,status);
            WD.insertWorkDetails(a,b,c,d,e,f); // Do I need to include the foreign key?
}

解决方案

Yes you're doing it the right way

这篇关于插入的外键到表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆