0

1つを除いて、すべてが正常に機能します。スコアが最も高いユーザー名を取得しようとすると、プログラムが失敗します。

私が得る結果はle_userの代わりに0です

これは、奇妙な動作をするコードの一部です。

string query = "SELECT * FROM \"Highscore_List\" ORDER BY Highscore_List.score DESC LIMIT 1";
DataTable  recipe = db.GetDataTable(query);
foreach (DataRow r in recipe.Rows)
{
    string old_user = r["user_name"].ToString();
    int oude_topscore = Convert.ToInt32(r["score"]);
}

そして、スコアは正しいですが、ユーザー名だけではありません。そして、私がクエリのこの部分を離れるとき

ORDER BY Highscore_List.score DESC LIMIT 1

結果は同じです。だからそれは問題ではありません。

だから私は何が間違っているのですか?

編集:

これがSQLダンプです。

-- ----------------------------
-- Table structure for "main"."Highscore_List"
-- ----------------------------
DROP TABLE "main"."Highscore_List";
CREATE TABLE "Highscore_List" (
"id"  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"score"  INTEGER NOT NULL,
"user_name"  INTEGER NOT NULL
);

-- ----------------------------
-- Records of Highscore_List
-- ----------------------------
INSERT INTO "main"."Highscore_List" VALUES (1, 1, 'hui');
INSERT INTO "main"."Highscore_List" VALUES (2, 2, 'Onbekend');
INSERT INTO "main"."Highscore_List" VALUES (3, 3, 'onbekend_tt');
INSERT INTO "main"."Highscore_List" VALUES (4, 2, 'onbekenddd');
INSERT INTO "main"."Highscore_List" VALUES (5, 6, 'le_user');
INSERT INTO "main"."Highscore_List" VALUES (6, 0, 'Onbekend');
4

1 に答える 1

1

列「user_name」を整数列として作成しました。

実際には、SQLiteがテキスト値を整数列に入れて、テキストとして再度読み取ることは問題ありません。ただし、SQLiteへのADO.NETインターフェイスについてはよく知りません。「user_name」の値を整数として読み取り、結果として値になるよう0です。問題を解決する方法は2つあります。

  1. 「user_name」列をTEXTとして作成します
  2. クエリ結果の「user_name」列の値をTEXTとして解釈する必要があることをADO.NET-SQLite-bridgeに通知する方法を見つけます
于 2012-09-12T14:27:00.440 に答える