java - SQLlite 数据库在 android studio 4 中无法正常工作
问题描述
我正在学习如何处理 SQLLite 数据库以在 android studio 中存储数据。我已经编写了如下代码,它应该在控制台上记录 2 个条目,但它没有发生。谁能告诉我为什么?
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase myDatabase = this.openOrCreateDatabase("Users", MODE_PRIVATE, null);
myDatabase.execSQL("CREATE TABLE IF NOT EXISTS users (name VARCHAR2, age INT(3))");
myDatabase.execSQL("INSERT INTO users(name, age) VALUES('Sajid', 22)");
myDatabase.execSQL("INSERT INTO users(name, age) VALUES('Shoaib', 28)");
Cursor c = myDatabase.rawQuery("SELECT * FROM users", null);
int nameIndex = c.getColumnIndex("name");
int ageIndex = c.getColumnIndex("age");
c.moveToFirst();
while(c!=null)
{
Log.i("Name", c.getString(nameIndex));
Log.i("Age", c.getString(ageIndex));
c.moveToNext();
}
}
}`
解决方案
你的代码应该是这样的:
Cursor c = myDatabase.rawQuery("SELECT * FROM users", null);
int nameIndex = c.getColumnIndex("name");
int ageIndex = c.getColumnIndex("age");
while(c.moveToNext())
{
Log.i("Name", c.getString(nameIndex));
Log.i("Age", c.getString(ageIndex));
}
推荐阅读
- sql - 获取关联计数低于列值的所有记录
- c - 用于隐写术的 C 程序
- python-3.x - 从 python 脚本重定向到输出文件时,输出顺序已更改
- android - 在具有不同工具栏的片段之间导航时如何消除故障?
- macos - 在 Mac 上使用同上命令时如何删除源 zip 文件?
- firebase - 使用 Textfield 数据创建一个文本文件并上传到 Flutter 中的 firebase 存储
- constraints - 约束随机 10 位,使得不会有 7 个连续的 0 或 1
- java - 如何将 csv 未绑定的列解析为地图?
- typescript - Discord ClientUser 不是构造函数
- swift - 带有 collectionView 的 Hero ViewController 动画 - swift