私はUnityでSQLiteを使用しており、起動画面でゲームによって生成されたテーブルからデータを読み込む際に問題が発生しています。私は何の誤りもなく、私の "reader.HasRows"呼び出しが真実に戻ってきます。しかし、DataTableにデータをロードしようとすると、何も得られません。私は以前にC#でSQLiteを使用していましたが、そのコードを参考にしていますが、以前はこのような問題は一度もありませんでした。DataTable.Load()はExecuteReader()からデータを取得しません
ScoreControl.cs:
using (SqliteConnection dbCon = new SqliteConnection("Data Source=" + Application.dataPath + "MainScoreDB.sqlite3"))
{
if (dbCon.State != ConnectionState.Open)
dbCon.Open();
string query = "SELECT * FROM highscores";
SqliteCommand command = new SqliteCommand(query, dbCon);
SqliteDataReader reader = command.ExecuteReader();
if(reader.HasRows)
{
Scores.Load(reader);
}
else
{
Debug.Log("No Data was Returned");
}
if (dbCon.State == ConnectionState.Open)
dbCon.Close();
}
else文は、読者は間違いなく何かを取得しますので、解雇されることはありません。私はここで紛失している、私はデータベース(s3db、sqlite、sqlite3)の複数のフォーマットを試したが、すべて同じ結果を持っています。私もエラーはありません。
EDIT
Application.dataPathがルートプロジェクトフォルダを参照し、私はデータベースやテーブルを生成するためにそれを使用するだけでなく、私はそれが正しいデータベースを照会していることを知って、それを参照し、Iテーブルを持たないデータベースを作成してエラーが発生したため、データベースにアクセスしていることがわかりました。
Scores.Load()は読み込まれたDataTableのメソッドで、リーダーから返されたデータを入力します。
したがって、whileループは適切な時間が経過しているように見えますが、何も返されません。データベースから出てくるデータのタイプを管理する必要がありますか?
Application.dataPathの値とは何ですか?正しいデータベースを照会しているかどうか確認しましたか? – Steve
パスとファイル名を組み合わせる場合は、Path.Combine()を使用します。これは、[欠落している可能性のある]バックスラッシュを処理します。 – djv
私はあなたのScores.Loadメソッドを見なければならないと思います。また、if文をデバッグするときに何が表示されますか?行を簡単に覗くことができます。これにより、レコードを正しく取得するかどうかを確かめることができます。 –