程序不会加载到选定的数据库,在调试文件夹中复制

时间:2017-03-30 15:05:46

标签: c# sqlite csv

该程序应该采用csv文件并将其加载到用户指定路径的sqlite数据库中。它不是尝试将值加载到所选数据库,而是在调试文件夹中创建数据库的副本,然后抛出错误,因为新数据库中不存在该表。我无法找到决定制作新文件的位置,而不是使用现有文件。

public GameObject player;

private Vector3 offset;

void Start ()
{
    offset = transform.position - player.transform.position;
}

以下是写入数据库的方法的副本。

using (System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("data source=" + db3FilePath + "; Synchronous=Off"))
{
    using (System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand(conn))
    {
        conn.Open();

        foreach (KeyValuePair<string, CSVRecord> kvp in csvDictionary.Skip(1))
        {
            //checks for duplicate records
            cmd.CommandText = "SELECT COUNT(*) FROM Accounts WHERE SDM_ACCT='" + kvp.Value.sdmacct + "'";
            int count = Convert.ToInt32(cmd.ExecuteScalar());

            if (count < 1)
            {
                WritetoDatabase.WritetoAccountsTable(kvp.Value.description, kvp.Value.priority, db3FilePath);
                WritetoDatabase.WritetoDirectoryTable(kvp.Value.number, kvp.Value.active, db3FilePath);

                recordCount++;
                //updates the progress bar and text field showing %
                int progress = y++ * 100 / (csvDictionary.Keys.Count -1);
                progressBar1.Invoke((MethodInvoker)(() => progressBar1.Value = progress));
                progressBar1.Invoke((MethodInvoker)(() => progressBar1.Update()));
                lblStatus.Invoke((MethodInvoker)(() => lblStatus.Text = "Writing records to database: " + progress.ToString() + "% Complete"));
                lblStatus.Invoke((MethodInvoker)(() => lblStatus.Update()));
            }
            else
            {
                WritetoDatabase.WritetoDirectoryTable(kvp.Value.number, kvp.Value.active, db3FilePath);
                y++;
            }
        }
        conn.Close();
    }
}

我已经改变了我能想到的一切,试图找出造成问题的原因。也许你会看到我无法做到的事情。

1 个答案:

答案 0 :(得分:0)

我见过的最糟糕的事情之一是打破一个程序。连接字符串using (System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("data source=" + filePath + "; Synchronous=Off"))具有“数据源”。如果它没有大写“数据源”,则它无法识别它并进入默认设置。