- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我目前正在尝试从我的数据库中提取一行,但是当我尝试时我只是遇到了这个错误。
2018-12-12 06:17:52.499 9065-9065/com.example.caesp.dmtool E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.caesp.dmtool, PID: 9065
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.caesp.dmtool/com.example.caesp.dmtool.CreateCharacter}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:451)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at com.example.caesp.dmtool.CreateCharacter.onCreate(CreateCharacter.java:128)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
就我的数据库而言,它看起来像这样
@Override
public void onCreate(SQLiteDatabase db)
{
// query to create a new table named dog
String CampaignList = "CREATE TABLE Campaigns" +
"(CamName TEXT);";
db.execSQL(CampaignList);// execute the query
String CharacterList = "CREATE TABLE Characters" +
"(CharName TEXT," +
"Campaign TEXT," +
"Class TEXT," +
"Level INTEGER," +
"Race TEXT," +
"Player_Name TEXT," +
"STR INTEGER," +
"DEX INTEGER," +
"CON INTEGER," +
"INT INTEGER," +
"WIS INTEGER," +
"CHA INTEGER," +
"First INTEGER," +
"Second INTEGER," +
"Third INTEGER," +
"Fourth INTEGER," +
"Fifth INTEGER," +
"Sixth INTEGER," +
"Seventh INTEGER," +
"Eighth INTEGER," +
"Ninth INTEGER," +
"Acro INTEGER," +
"Anhan INTEGER," +
"Arc INTEGER," +
"Ath INTEGER," +
"Dec INTEGER," +
"His INTEGER," +
"Ins INTEGER," +
"Inti INTEGER," +
"Inves INTEGER," +
"Med INTEGER," +
"Nat INTEGER," +
"Perc INTEGER," +
"Perf INTEGER," +
"Pers INTEGER," +
"Rel INTEGER," +
"Slei INTEGER," +
"Ste INTEGER," +
"Sur INTEGER," +
"Prof_Bon INTEGER," +
"Attacks TEXT," +
"AC INTEGER," +
"InitBon INTEGER," +
"Spd INTEGER," +
"HP_Max INTEGER," +
"HP TEXT," +
"Hit_Die TEXT," +
"Equip TEXT," +
"Backstory TEXT," +
"ProfnLang TEXT," +
"Feats TEXT," +
"SSDC INTEGER," +
"SCA TEXT," +
"SAB INTEGER," +
"Spells TEXT" +
");";
db.execSQL(CharacterList);
} // end method onCreate
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
} // end method onUpgrade
}
我的 get 方法和我尝试运行的部分 Activity 是这样的
if (RQCode == 2){
CurrentName = extras.getString("CharName");
DatabaseConnector dc = new DatabaseConnector(this);
dc.open();
Cursor c = dc.getOneCharacter(CurrentName);
if (c != null && c.moveToFirst()){
Name.setText(c.getString(c.getColumnIndex("CharName")));
Player.setText(c.getString(c.getColumnIndex("Player_Name")));
Level.setText(c.getString(c.getColumnIndex("Level")));
Race.setText(c.getString(c.getColumnIndex("Race")));
Class.setText(c.getString(c.getColumnIndex("Class")));
STR.setText(c.getString(c.getColumnIndex("STR")));
DEX.setText(c.getString(c.getColumnIndex("DEX")));
CON.setText(c.getString(c.getColumnIndex("CON")));
INT.setText(c.getString(c.getColumnIndex("INT")));
WIS.setText(c.getString(c.getColumnIndex("WIS")));
CHA.setText(c.getString(c.getColumnIndex("CHA")));
Acro.setText(c.getString(c.getColumnIndex("Acro")));
Anhan.setText(c.getString(c.getColumnIndex("Anhan")));
Arc.setText(c.getString(c.getColumnIndex("Arc")));
Ath.setText(c.getString(c.getColumnIndex("Ath")));
Dec.setText(c.getString(c.getColumnIndex("Dec")));
His.setText(c.getString(c.getColumnIndex("His")));
Ins.setText(c.getString(c.getColumnIndex("Ins")));
Inti.setText(c.getString(c.getColumnIndex("Inti")));
Inves.setText(c.getString(c.getColumnIndex("Inves")));
Med.setText(c.getString(c.getColumnIndex("Med")));
Nat.setText(c.getString(c.getColumnIndex("Nat")));
Perc.setText(c.getString(c.getColumnIndex("Perc")));
Perf.setText(c.getString(c.getColumnIndex("Perf")));
Pers.setText(c.getString(c.getColumnIndex("Pers")));
Rel.setText(c.getString(c.getColumnIndex("Rel")));
Slei.setText(c.getString(c.getColumnIndex("Slei")));
Ste.setText(c.getString(c.getColumnIndex("Ste")));
Surv.setText(c.getString(c.getColumnIndex("Sur")));
AC.setText(c.getString(c.getColumnIndex("AC")));
Init.setText(c.getString(c.getColumnIndex("Init")));
Spd.setText(c.getString(c.getColumnIndex("Spd")));
HP.setText(c.getString(c.getColumnIndex("HP")));
HitDice.setText(c.getString(c.getColumnIndex("Hit_Die")));
ProfBon.setText(c.getString(c.getColumnIndex("Prof_Bon")));
Attacks.setText(c.getString(c.getColumnIndex("Attacks")));
Spells.setText(c.getString(c.getColumnIndex("Spells")));
SAB.setText(c.getString(c.getColumnIndex("SAB")));
SCA.setText(c.getString(c.getColumnIndex("SCA")));
SSDC.setText(c.getString(c.getColumnIndex("SSDC")));
First.setText(c.getString(c.getColumnIndex("First")));
Second.setText(c.getString(c.getColumnIndex("Second")));
Third.setText(c.getString(c.getColumnIndex("Third")));
Fourth.setText(c.getString(c.getColumnIndex("Fourth")));
Fifth.setText(c.getString(c.getColumnIndex("Fifth")));
Sixth.setText(c.getString(c.getColumnIndex("Sixth")));
Seventh.setText(c.getString(c.getColumnIndex("Seventh")));
Eighth.setText(c.getString(c.getColumnIndex("Eighth")));
Ninth.setText(c.getString(c.getColumnIndex("Ninth")));
ProfnLang.setText(c.getString(c.getColumnIndex("ProfnLang")));
Feats.setText(c.getString(c.getColumnIndex("Feats")));
Equipment.setText(c.getString(c.getColumnIndex("Equipment")));
Backstory.setText(c.getString(c.getColumnIndex("Backstory")));
}
}
由于某种原因,它卡在了“Init”整数处。
现在我的主要目标是获取我从数据库中提取的信息,并将其附加到我在此 Activity 中设置的一堆 View 中。我会工作到中午左右,但我会尽力与任何愿意提供帮助的人沟通。
最佳答案
问题是其中一个 getColumnIndex(column) 没有找到匹配的列(因此返回 -1)。
根据
Returns the zero-based index for the given column name, or -1 if the column doesn't exist. If you expect the column to exist use getColumnIndexOrThrow(String) instead, which will make the error more clear. Cursor - getColumnIndex
我相信这是因为您使用了 Init.setText(c.getString(c.getColumnIndex("Init")));
即它正在尝试在表中找到名为 init 的列,它似乎被定义为 InitBon。
解决打字错误/拼写错误/列名错误的方法是将它们编码为常量,然后始终使用完全相同的常量。
关于android - 从 SQL 数据库中提取单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742112/
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!