gpt4 book ai didi

android - SQLiteException - 没有这样的表

转载 作者:行者123 更新时间:2023-11-29 22:25:20 27 4
gpt4 key购买 nike

当我尝试访问我的 View 时出现此错误

我已经使用它构建了我的数据库/ View

CREATE TABLE Boxer(
BoxerId INTEGER PRIMARY KEY AUTOINCREMENT,
Firstname NVARCHAR(50) NOT NULL,
Lastname NVARCHAR(50) NOT NULL
);

CREATE TABLE Match(
MatchId INTEGER PRIMARY KEY AUTOINCREMENT,
BoxerA INTEGER NOT NULL FOREIGN KEY REFERENCES Boxer(BoxerId),
BoxerB INTEGER NOT NULL FOREIGN KEY REFERENCES Boxer(BoxerId),
MatchDate date NOT NULL DEFAULT GETDATE(),
NumberOfRounds INTEGER NOT NULL DEFAULT 12
);

CREATE TABLE Round(
RoundId INTEGER PRIMARY KEY AUTOINCREMENT,
MatchId INTEGER NOT NULL FOREIGN KEY REFERENCES Match(MatchId),
BoxerA INTEGER NOT NULL DEFAULT 0,
BoxerB INTEGER NOT NULL DEFAULT 0,
Position INTEGER NOT NULL
);

/*
Building a view which dislpays matches with boxers names and total scores
*/
CREATE VIEW MatchDetail AS
SELECT Match.MatchId, A.BoxerId AS IdA, B.BoxerId AS IdB, A.Firstname + ' ' + A.Lastname AS NameA, B.Firstname + ' ' + B.Lastname AS NameB,
(SELECT SUM(R.BoxerA) AS Score FROM Round AS R WHERE (R.MatchId = Match.MatchId)) AS ScoreA,
(SELECT SUM(R.BoxerB) AS Score FROM Round AS R WHERE (R.MatchId = Match.MatchId)) AS ScoreB,
Match.MatchDate, Match.NumberOfRounds
FROM Boxer AS A INNER JOIN Match ON A.BoxerId = Match.BoxerA INNER JOIN Boxer AS B ON Match.BoxerB = B.BoxerId

到目前为止,我几乎已经使用记事本示例构建了我的应用程序,因此我随后调用了我的 DbHelper

Cursor MatchesCursor = mDbHelper.fetchAllMatchDetails();

然后调用查询

public Cursor fetchAllMatchDetails(){
return mDb.query(VIEW_MATCHDETAIL, new String[] {
"MatchId"
}, null, null, null, null, null);
}

VIEW_MATCHDETAIL 定义为字符串 = "MatchDetail"

它在这里崩溃说

no such table MatchDetail: while compiling SELECT MatchId FROM MatchDetail

以前有人遇到过这个问题吗?

最佳答案

那里有一些漂亮的 SQL。不幸的是,在 SQLiteDatabase.execSQL 中只有第一行 sql 会被执行。其余的将被默默地忽略(方便吧?)。像这样手动拆分语句:

https://github.com/browep/fpt/blob/master/src/com/github/browep/nosql/NoSqlSqliteOpener.java

或者如果你想将你的 sql 保存在一个单独的文件中,试试这个:

String sqlText = getSqlText();
for(String sqlStmt : sqlText.split(";"))
myDb.execSQL(slqStmt + ";");

关于android - SQLiteException - 没有这样的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6130641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com