Нет такой ошибки таблицы, даже если она может быть вставлена ​​в 1 таблицу, а не в другую - PullRequest
0 голосов
/ 23 января 2020

Использование c#, sqlite

Моя база данных состоит из JobApplicantsDB (PK) и FamilyParticulars (FK). Я вернулся к своему коду через несколько недель, и появилась ошибка «такая таблица не появилась», хотя в прошлый раз она работала так, как задумано.

System.Data.SQLite.SQLiteException
  HResult=0x800007BF
  Message=SQL logic error
no such table: JobApplicantsDB
  Source=System.Data.SQLite

Я много раз подтверждал, что файл БД помещен inside C: \ Users \ Tim \ source \ repos \ JobApplication \ JobApplication \ bin \ Отладка с использованием файла типа db, а не базы данных sqlite. Проблема заключается в том, что, несмотря на появление ошибки, данные по-прежнему вставляются в таблицу JobApplicantsDB, но не в таблицу FamilyParticulars (которая является внешним ключом вышеупомянутой таблицы). Я что-то упустил, чего не заметил? MAX (P1ID) вставляется в таблицу FamilyParticulars для более легкого удаления в дальнейшем.

    private SQLiteConnection sql_con;
    private SQLiteCommand sql_cmd;

    private void SetConnection()
    {
        sql_con = new SQLiteConnection
            ("Data Source = C:/Users/Tim/source/repos/JobApplication/JobApplication/bin/Debug/JobApplicants;Version=3;New=False;Compress=True;");
    }

    private void ExecuteQuery(string txtQuery)
    {
        SetConnection();
        sql_con.Open();
        sql_cmd = sql_con.CreateCommand();
        sql_cmd.CommandText = txtQuery;
        sql_cmd.ExecuteNonQuery();
        sql_con.Close();
    }
    private void Submitbutton_Click(object sender, EventArgs e)    //save applicants' questionnaire
    {
            sql_con = new SQLiteConnection
                ("Data Source = JobApplicants;Version=3;New=False;Compress=True;");
            sql_con.Open();
            string txtQueryP1 = "insert into JobApplicantsDB (P1PosApp, P1FTPT, P1Name, P1DOB) values " +
                "('" + PositionAppliedtxt.Text + "', '" + FTPTCB.Text + "', '" + Nametxt.Text + "', '" + DOBdateTimePicker.Text + "')";
            ExecuteQuery(txtQueryP1);

                sql_con = new SQLiteConnection
                    ("Data Source = JobApplicants;Version=3;New=False;Compress=True;");
                sql_con.Open();
                string txtQueryMAX = "select MAX(P1ID) from JobApplicantsDB";
                SQLiteCommand cmd = new SQLiteCommand(txtQueryMAX, sql_con);
                int id = Convert.ToInt32(cmd.ExecuteScalar());

                string txtQueryP2b = "insert into FamilyParticulars(P2ID, P2FamName,P2FamRelationship,P2FamNationality,P2FamDOB,P2FamOccupation,P2FamCompany) values(" + id + ",'" + FamNametxt1.Text + "','" + FamRelationshipCB1.Text + "','" + FamNationalitytxt1.Text + "','" + FamDOBdateTimePicker1.Text + "','" + FamOcctxt1.Text + "', '" + FamCompanytxt1.Text + "')";
                    ExecuteQuery(txtQueryP2b);
}

1 Ответ

0 голосов
/ 24 января 2020

Файл JobApplicants и база данных JobApplicants в папке выпуска были в 0 КБ, но все еще могли быть сохранены в таблицу JobApplicants, а не в таблицу FamilyParticulars. Я запускал код в выпуске вместо отладки, поэтому он работал, когда я переключил его на отладку, но я все еще не уверен, почему я могу вставить данные в файлы размером 0 КБ в папке выпуска.

По сути, проверьте, является ли Я полагаю, конфигурация решения выполняется в выпуске или отладке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...