在表中插入主键时出现问题 - java

我有2个表,公司表(用于存储登录信息)和分配(用于存储分配详细信息)。

企业表中的列:id(主键自动递增),uname,密码。
没有从用户那里获得ID。

分配表中的列:Assignment_topic,assignment_content,total_marks,id(外键),id_assignment(主键自动递增)。

信息流:
1.登录用户->除了检查是否有有效用户外,还要初始化id(1000)并返回它(searchId()方法)。
2. UI输入来自用户的分配详细信息-> BackgroundTask ---> insertAssignment方法。

问题:我无法通过从公司表中检索id(主键)在分配表中插入id(FOREIGN KEY)。有关列显示为空。

尝试了以下内容:

如您在DatabaseHelper类中所看到的,我尝试了外键,但是它不起作用,因此将其删除。
除了上述之外,我尝试通过getter和setter获取id,能够做到一定程度,但不知道数据在哪里中断。

由于我是Android新手,如果你们可以帮助我解决此问题,那将是很棒的。

如果您需要我提供的进一步信息,请告诉我。

以下是必要的代码。

Insert_assignment类:

public void SubmitData(View view) {

    String topic_assign = topic.getText().toString();
    String topic_content_assign = topic_content.getText().toString();
    String total_marks = t_marks.getText().toString();
    String id = loginInfo.getId();

    Log.e("assignment_id:",id);

    BackgroundTask backgroundTask = new BackgroundTask(this);
    backgroundTask.execute("add_assignment", topic_assign, topic_content_assign, total_marks,id);
}

BackgroundTask类:

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ListView;
import android.widget.Toast;

public class BackgroundTask extends AsyncTask<String, Teacher_Assignment, String> {

    private static final String TAG = " Background task";

    LoginInfo loginInfo = new LoginInfo();

    Activity activity;
    ListView listView;

    AssignmentAdapter assignmentAdapter;
    Teacher_Assignment teacher_assignment = new Teacher_Assignment();

    private Context context;


    BackgroundTask(Context context)
    {
        this.context =  context;
        activity = (Activity)context;
    }

    @Override
    protected String doInBackground(String... params) {

        String method = params[0];
        DatabaseHelper databaseHelper = new DatabaseHelper(context);
        if(method.equals("add_assignment")) {
            String topic_assignment = params[1];
            String topic_content = params[2];
            String total_marks = params[3];
            String id = params[4];


            SQLiteDatabase db = databaseHelper.getWritableDatabase();
            databaseHelper.insertAssignment(db,topic_assignment,topic_content,total_marks, id);
            Log.d(TAG,"inserted successfully");

        } else if(method.equals("get_info")) {

            listView = (ListView) activity.findViewById(R.id.list_assignment);

            //DatabaseHelper databaseHelper = new DatabaseHelper(context);
            SQLiteDatabase db = databaseHelper.getReadableDatabase();
            Cursor cursor = databaseHelper.getInformation(db);


            assignmentAdapter = new AssignmentAdapter(context, R.layout.activity_assignment_page_recycle_view);

            String assignment_content;
            while(cursor.moveToNext()){

                assignment_content = cursor.getString(cursor.getColumnIndex(teacher_assignment.Assignment_content));
                Teacher_Assignment teacher_assignment = new Teacher_Assignment(assignment_content);
                publishProgress(teacher_assignment);
            }

            return "get_info";
        }


        return "One row inserted";
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(String result) {

        if (result.equals("get_info")) {
            listView.setAdapter(assignmentAdapter);
        } else {
            Toast.makeText(context, result, Toast.LENGTH_LONG).show();
        }

    }


    protected void onProgressUpdate(Assignment_Page... values) {
        assignmentAdapter.add(values[2]);
    }
}

DatabaseHelper类:

package com.example.education;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.nfc.Tag;
import android.util.Log;

class DatabaseHelper extends SQLiteOpenHelper {

    LoginInfo loginInfo = new LoginInfo();

    Teacher_Assignment assign1 = new Teacher_Assignment();

    //Login table
    private static final int DATABASE_VERSION = 41;
    private static final String DATABASE_NAME = "userInfo.db";
    private static final String TABLE_NAME = "corporate";
    private static final String COLUMN_ID = "id";
    private static final String COLUMN_UNAME = "uname";
    private static final String COLUMN_PASSWORD = "password";

    private static final String TABLE_ASSIGNMENT = "assignment";
    //private static final String COLUMN_ID_ASSIGNMENT = "user_id";
    private static final String ASSIGNMENT_TOPIC = "assignment_topic";
    //private static final String COLUMN_NAME = COLUMN_UNAME;
    private static final String ASSIGNMENT_CONTENT = "assignment_content";
    private static final String ASSIGNMENT_TOTAL_MARKS = "total_marks";
    private static final String ID_COLUMN_ASSIGNMENT = "id_assignment";


    private static final String TABLE_STUDENT_SELECTION = "student_selection";
    private static final String COLUMN_STUDENT_ID = "student_id";
    private static final String COLUMN_CLASS_SEC = "class_sec";
    private static final String COLUMN_STUDENT_NAME = "name";
    private static final String COLUMN_TOTAL_MARKS = "total_marks";
    private static final String COLUMN_STUDENT_MARKS = "student_score";



    SQLiteDatabase db;

    private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "("
            + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_UNAME + " TEXT NOT NULL, " + COLUMN_PASSWORD + " TEXT NOT NULL " + ")";


    private static final String CREATE_ASSIGNMENT_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_ASSIGNMENT + "("
            + ASSIGNMENT_TOPIC + " TEXT NOT NULL, " + ASSIGNMENT_CONTENT  + " TEXT NOT NULL, "
            + ASSIGNMENT_TOTAL_MARKS + " TEXT NOT NULL, "
            + ID_COLUMN_ASSIGNMENT + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + COLUMN_ID + " TEXT " + ")";


    //+ " FOREIGN KEY(" + COLUMN_ID + ") REFERENCES " + TABLE_NAME + " (id) "

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public void insertData() {

        db = this.getWritableDatabase();
        ContentValues content = new ContentValues();

        content.put(COLUMN_ID,1000);
        content.put(COLUMN_UNAME, "akhil");
        content.put(COLUMN_PASSWORD,"admin");



        db.insert(TABLE_NAME, null, content);

        db.close();
    }

    public String insertAssignment(SQLiteDatabase db,String topic, String assignment_content, String total_marks, String id) {

        db = this.getWritableDatabase();
        ContentValues content1 = new ContentValues();

        //id = searchId(COLUMN_UNAME);

        content1.put(ASSIGNMENT_TOPIC, topic);
        content1.put(ASSIGNMENT_CONTENT,assignment_content);
        content1.put(ASSIGNMENT_TOTAL_MARKS,total_marks);
        content1.put(COLUMN_ID, loginInfo.getId());
        db.insert(TABLE_ASSIGNMENT, null, content1);
        db.close();

        return topic;
    }

数据库截图:

在表中插入主键时出现问题 - java

java大神给出的解决方案

id值来自在BackgroundTask中初始化的loginInfo实例:

class DatabaseHelper extends SQLiteOpenHelper {

LoginInfo loginInfo = new LoginInfo();

如果id是通过//id = searchId(COLUMN_UNAME);获得的,请检查searchId方法。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

如何在JAVA中传递以逗号分隔的值作为函数参数的字符串 - java

我有一个可以接受任何数量的INTEGER参数的方法:pages(int,int...)此方法是选择PDF文件的某些页面。以以下字符串类型存储的书页:String pages = "1,2,3,6,9"; 我想将此字符串作为方法的参数看起来像:pages(1,2,3,6,9); java大神给出的解决方案 使用流可以很容易地做到这一点:St…

java.net.URI.create异常 - java

java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

AppCompat不支持当前主题 - java

我的应用在Android N上运行正常,但在Android M上的setContentView(R.layout.activity_main)崩溃: Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { w…

如何在Java中以语言环境正确的顺序格式化日期和月份? - java

有没有一种方法可以用Java / Kotlin中的区域设置正确的格式格式化日和月(以紧凑格式)而不格式化年份?因此,对于英语,应为“ 9月20日”,而对于瑞典语为“ 9月20日”。为了进行比较,在Cocoa平台上,我可以执行以下操作(在Swift中):let formatter = DateFormatter() formatter.locale = Loc…