Tko0213ken
@Tko0213ken

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

C# SQLiteのファイルのパス指定でエラー

C#初心者です。
Visual stadio で簡易的な職員登録機能を作成しています。
登録情報を保持するためにSystem.data.SQLite.coreを使用しているのですが、データベースファイルの保存場所を@"C:\Users\DataBase.sqlite"と指定してCreateTable()を実行すると以下のエラーが出てしまいます。どのように書き換えたらよいでしょうか?
ご教授のほどよろしくお願いいたします。

エラーメッセージ:System.Data.SQLite.SQLiteException: 'unable to open database file'
エラー箇所:private void ExecuteNonQueryメソッド内のconn.Open();

 public class RecordDB
 {
    static string DBName = "DataBase.sqlite";//データベース名
    static string FolderPath = @"C:\Users";//保存先フォルダパス
    static string DBPath = System.IO.Path.Combine(FolderPath, DBName);
    string DataSource = $"Data Source={DBPath}";


    //テーブル作成
    public void CreateTable()
    {
        StringBuilder query = new();
        query.Clear();
        query.Append("CREATE TABLE IF NOT EXISTS STAFF_RECORD (");
        query.Append("ID INTEGER MOT NULL");
        query.Append(" ,NAME TEXT NOT NULL");
        query.Append(" ,BIRTHDAY TEXT NOT NULL");
        query.Append(" ,DEPARTMENT TEXT NOT NULL");
        query.Append(" ,UNIT TEXT NOT NULL");
        query.Append(" )");

        ExecuteNonQuery(query.ToString());
    }

    //SQL文実行
    private void ExecuteNonQuery(string query)
    {
        using (var conn = new SQLiteConnection(DataSource))
        using (var command = conn.CreateCommand())
        {
            conn.Open();★←エラー発生
            command.CommandText = query;
            command.ExecuteNonQuery(); 
        }
    }
}
0

2Answer

データベースファイルが開けないというエラーですね。
エラー行の手前で、DataSourceの内容がどうなっているか、コンソールに出力して確認してください。

Console.WriteLine(DataSource);
conn.Open();

コンソールに出力されたパスが示すファイルは存在しますか?

0Like

C:\UsersはWindowsがユーザプロファイル(ユーザ名のフォルダがあるはずです)を作成するフォルダなので通常はファイルを作れません。自分がアクセスできるフォルダを指定してください。

エラーが出てしまいます

エラーが出ている場合はエラーメッセージやスタックトレースが重要な情報となりますので、それらを載せた方が適切な回答が得られます。

0Like

Your answer might help someone💌