我正在尝试使用SQLite
运行Cursor
查询,但我不确定如何检索我想要的内容。
我的SQL表如下:
db.ExecSQL(@"CREATE TABLE IF NOT EXISTS categories(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
categoryName TEXT NOT NULL)");
db.ExecSQL(@"CREATE TABLE IF NOT EXISTS teams(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
teamName TEXT NOT NULL,
cat INTEGER NOT NULL,
favINTEGER NOT NULL,
FOREIGN KEY(cat) REFERENCES categories(Id))");
以下是我正在尝试运行的查询。我需要显示与团队相关联的类别,但是当我查询并显示查询时,而不是与“1”相关联的类别,而是显示实际数字“1”而不是与之关联的单词。
我的查询如下:
ICursor c = db.Query("teams", new string[] { "Id", "teamName", "cat", "fav"}, "fav= 0", null, null, null, null);
需要更多代码,请询问。
答案 0 :(得分:1)
FOREIGN KEY用于定义约束,为了便于检索,它实际上没有定义关系;为此你需要使用JOIN将表合并在一起。
如果使用rawQuery,SELECT将遵循: -
SELECT teams.Id, teams.teamName, teams.cat, teams.fav, categories.Id, categories.categoryName FROM teams JOIN categories ON teams.cat = catagories.Id WHERE fav=0)
然而,使用光标 query
(查询C#)方法很难理解 JOIN 应该去哪里,它/它们可以放入表格(第一个)参数。
所以: -
ICursor c = db.Query("teams", new string[] { "Id", "teamName", "cat", "fav"}, "fav= 0", null, null, null, null);
可能变为(也改为检索所有列): -
<强> ICursor c = db.Query("teams JOIN categories ON cat= categories.Id", new string[] { "teams.Id AS teamsID", "teams.teamName", "teams.cat", "teams.fav", "categories.Id AS categoriesID", "categories.categoryname"}, "fav= 0", null, null, null, null);
强>