- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的旧 SQLite 数据库没有按照我想要的方式工作,所以我想删除旧的 DBAdapter 文件夹和 DBHelper 文件夹,并从头开始创建一个新数据库,其中包含 2 个新表、新列名和一个新DATABASE_NAME,但在我使用新的字符串和游标将所有内容链接到我的应用程序后,我遇到了空点崩溃,并且在我的 logcat 中收到了这些错误。
更新:我已将 onCreate 参数更改为 db,并解决了无效表错误,但现在我有一个表“Players”(MyFirstTable) 不存在错误。
更新:新的 LOGCAT
04-19 19:56:02.781: E/AndroidRuntime(9179): FATAL EXCEPTION: main
04-19 19:56:02.781: E/AndroidRuntime(9179): android.database.sqlite.SQLiteException: no such table: PLAYERS (code 1): , while compiling: SELECT _id, USERNAME FROM PLAYERS
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200)
04-19 19:56:02.781: E/AndroidRuntime(9179): at com.fullfrontalgames.numberfighter.DBAdapter.getUsername(DBAdapter.java:143)
04-19 19:56:02.781: E/AndroidRuntime(9179): at com.fullfrontalgames.numberfighter.Findfriends$1.onClick(Findfriends.java:39)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.view.View.performClick(View.java:4106)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.view.View$PerformClick.run(View.java:17052)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.os.Handler.handleCallback(Handler.java:615)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.os.Handler.dispatchMessage(Handler.java:92)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.os.Looper.loop(Looper.java:137)
04-19 19:56:02.781: E/AndroidRuntime(9179): at android.app.ActivityThread.main(ActivityThread.java:5059)
04-19 19:56:02.781: E/AndroidRuntime(9179): at java.lang.reflect.Method.invokeNative(Native Method)
04-19 19:56:02.781: E/AndroidRuntime(9179): at java.lang.reflect.Method.invoke(Method.java:511)
04-19 19:56:02.781: E/AndroidRuntime(9179): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
04-19 19:56:02.781: E/AndroidRuntime(9179): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
04-19 19:56:02.781: E/AndroidRuntime(9179): at dalvik.system.NativeStart.main(Native Method)
DBAdapter类
package com.fullfrontalgames.numberfighter;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter {
static final String KEY_ROWID = "_id";
static final String KEY_USERNAME = "USERNAME";
static final String KEY_PASSWORD = "PASSWORD";
static final String KEY_EMAIL = "EMAIL";
static final String KEY_NUMBERINPUT = "NUMBERINPUT";
static final String KEY_SCORE = "SCORE";
static final String KEY_FRIENDS = "FRIENDS";
static final String TAG = "DBAdapter";
static final String DATABASE_NAME = "NFDatabase";
static final String DATABASE_TABLE1 = "PLAYERS";
static final String DATABASE_TABLE2 = "FRIENDSLIST";
static final int DATABASE_VERSION = 1;
static final String DATABASE_CREATE_TABLE1 = "create table PLAYERS (_id integer primary key autoincrement,"
+ "USERNAME text not null,PASSWORD text not null,EMAIL text not null,NUMBERINPUT text not null,,SCORE text not null;";
static final String DATBASE_CREATE_TABLE2 = "create table FRIENDSLIST (_id integer primary key autoincrement,"
+ "FRIENDS text not null,USERNAME text not null,NUMBERINPUT text not null,SCORE text not null;";
final Context context;
DatabaseHelper DBHelper;
static SQLiteDatabase db;
public DBAdapter(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
// TODO Auto-generated constructor stub
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
try {
db.execSQL(DATABASE_CREATE_TABLE1);
db.execSQL(DATABASE_CREATE_TABLE2);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion
+ ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS PLAYERS,FRIENDSLIST");
onCreate(db);
}
}
public DBAdapter open() throws SQLiteException {
db = DBHelper.getWritableDatabase();
return this;
}
public void close() {
DBHelper.close();
}
// PLAYERS TABLE CRUD
public void insertPlayer(String Username, String Password, String Email) {
ContentValues initialValues = new ContentValues();
initialValues.put("USERNAME", Username);
initialValues.put("PASSWORD", Password);
initialValues.put("EMAIL", Email);
}
public boolean deletePlayer(String username) {
return db.delete("PLAYERS", KEY_ROWID + " = " + "_id", null) > 0;
}
public Cursor getAllPlayers() {
return db.query(null, new String[] {
"_id", "USERNAME", "PASSWORD", "EMAIL"
}, null, null, null, null, null, null);
}
public String getData() {
String[] columns = new String[] {
"_id", "USERNAME", "PASSWORD"
};
Cursor mCursor = db.query("PLAYERS", columns, null, null, null, null, null);
String result = "";
int iRow = mCursor.getColumnIndex(KEY_ROWID);
int iName = mCursor.getColumnIndex(KEY_USERNAME);
for (mCursor.moveToFirst(); !mCursor.isAfterLast(); mCursor.moveToNext()) {
result = mCursor.getString(iRow) + " " + mCursor.getString(iName) + "/n";
}
return result;
}
public Cursor getPlayer(long rowid) throws SQLException {
Cursor mCursor = db.query(true, "PLAYERS", new String[] {
"_id", "USERNAME"
}, KEY_ROWID + " = " + "_id", null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public String getUsername(String username) {
// TODO Auto-generated method stub
String[] columns = new String[] {
"_id", "USERNAME"
};
Cursor mCursor = db.query("PLAYERS", columns, null, null, null, null, null);
String result = "";
int iRow = mCursor.getColumnIndex(KEY_ROWID);
int iName = mCursor.getColumnIndex(KEY_USERNAME);
for (mCursor.moveToFirst(); !mCursor.isAfterLast(); mCursor.moveToNext()) {
result = mCursor.getString(iRow) + " " + mCursor.getString(iName) + "/n";
}
return result;
}
public String getSinlgeEntry(String Username) {
Cursor cursor = db.query("PLAYERS", null, " USERNAME=?", new String[] {
Username
}, null, null, null);
if (cursor.getCount() < 1) // UserName Not Exist
{
cursor.close();
return "NOT EXIST";
}
cursor.moveToFirst();
String password = cursor.getString(cursor.getColumnIndex("PASSWORD"));
cursor.close();
return password;
}
public boolean updatePlayer(long _id, String Username, String Password, String Email) {
ContentValues args = new ContentValues();
args.put("USERNAME", Username);
args.put("PASSWORD", Password);
args.put("EMAIL", Email);
return db.update("PLAYERS", args, KEY_ROWID + " = " + _id, null) > 0;
}
// FRIENDS TABLE CRUD
public void insertFriend(String Friend) {
ContentValues initialValues = new ContentValues();
initialValues.put("FRIENDS", Friend);
db.insert("FRIENDSLIST", null, null);
}
public boolean deleteFriend(String deletedfriend) {
return db.delete("FRIENDSLIST", KEY_ROWID + " = " + "_id", null) > 0;
}
public Cursor getAllFriends() {
return db.query(null, new String[] {
"_id", "FRIENDS"
}, null, null, null, null, null, null);
}
public Cursor getFriend(long rowid) throws SQLException {
Cursor mCursor = db.query(true, "FRIENDSLIST", new String[] {
"_id", "FRIENDS"
}, KEY_ROWID + " = " + "_id", null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateFriend(long _id, String Friends) {
ContentValues args = new ContentValues();
args.put("FRIENDS", Friends);
return db.update("FRIENDSLIST", args, KEY_ROWID + " = " + _id, null) > 0;
}
}
最佳答案
在这里,您没有像其他方法一样命名您的方法参数db
,所以我猜它正在隐藏静态变量DBAdapter.db
。
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
try {
db.execSQL(DATABASE_CREATE_TABLE1);
db.execSQL(DATBASE_CREATE_TABLE2);
} catch (SQLException e) {
e.printStackTrace();
}
}
尝试将arg0
更改为db
。
关于java - 新建的 SQLitedatabase 表不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114685/
我目前正在开发自己的内存泄漏跟踪系统。 我正在使用 Microsoft Visual C++ 2008,我知道他们有一个内置的,但我一直在为自己制作一个,只是为了好玩。 但是,当我覆盖 new 和 n
在我的库(替换全局 new/delete 运算符)中,我使用另一个外部库(casablanca pplx)。此外部库不包含替换的 new/delete 运算符(我使用 Visual Studio 的
最近的 C++ 标准中的内存分配操作是否有复杂性保证?也就是说,如果我有一个类 A,其默认构造函数和析构函数在 O(1) 中运行,那么“new A[N]”和“delete[] A”的 big-O 是什
我正在用 Qt 和 C++ 编写一个简单的编辑器。我想要有标签,所以在创建新文档后,我想在新标签中打开它。我的代码: // mainwindow.cpp #include "mainwindow.h"
好吧,这让我感到困惑...下面的代码在一个 DLL 中,当我的控制台应用程序调用这段代码时,它突然在 delete[] lpBuffer 行抛出访问冲突。我整天都在使用这段代码,根本没有改变它。到目前
我现在很头疼。 基本上我有这个: Class A -> Class B Class A -> Class C Class A -> Class D Class E with constructor w
我想通过将一个表 (tableA) 与另一个表 (tableB) 进行比较来查找新的、修改的和删除的记录。两个表具有相同的模式并具有唯一的 ID 字段。 在我的情况下,tableA 最初与 table
这是我们的商业案例, 应用程序为使用过的 iPhone 提供即时报价,并允许卖家立即出售。另一方面,有些买家愿意立即购买或竞标房源。潜在的零售商可以访问网站并根据年份、型号、状况、配件输入获得即时报价
需要一些帮助。设法创建一个 jQuery 来在单击后更改按钮的类,但我需要您单击一个从其他按钮中删除的新按钮类。 我正在努力,但我做不到。我已经尝试了一些方法,但每当我尝试时,我都可以删除所有内容并单
为什么“创建 Java 项目”屏幕中有时会缺少“内容”部分(带有“从现有源创建项目”选项)?我知道我以前见过并使用过它,但现在它已经消失了。 最佳答案 您最好在 Eclipse JDT 论坛上提出这个
我写了下面的代码 1. function Car() { this.make = "BMW" } var x = new Car().make alert(x) 结果:显示警报 BMW 2. fu
我正在使用 wxPython 为 python 应用程序编写 UI。我已经处理了一些 OnX 函数,但我需要 OnNew 和 OnSave/SaveAs 方面的帮助 这是我的保存和另存为代码: def
每当我尝试创建一个新的 Win32 控制台应用程序或 Win32 项目时,Win32 应用程序向导弹出,项目设置项目符号点为空,并且无法单击“应用程序设置”、“完成”和“取消”按钮. 当我搜索与我类似
我创建了一个扩展点 newWizard,并在那里添加了向导(比方说 Wizard1、Wizard2、Wizard3)。我创建了一个视角,即 perspectiv1。当我创建插件项目时,所有向导标签都会
新建 >> 项目 >> Android 应用程序 项目不起作用我收到这些消息: Problem Opening Wizard The selected wizard could not be star
#include #include using namespace std; int main(void) { unsigned char* pFoo = new unsigned cha
谁能帮我理解为什么我的代码在第一段代码中的 delete[] szPassword 上失败?我知道 szPassword 只是复制“a”,而 st2 等于 8: TCHAR *szPassword =
伙计们,如果我在我的 dll 代码中覆盖全局新建和删除,这会覆盖用户代码新建和删除吗?我做了一个测试,显示用户new和delete不会受到影响。如果我想让用户代码new和delete被我的sdk ne
编译 in_ 表达式的默认 SQLAlchemy 行为对于非常大的列表来说是病态的,我想为运算符创建一个自定义的、更快的编译器。如果解决方案是一个新的运算符(即:in_list_)或者它是否覆盖了 i
new 和 delete 被称为预处理器,而 malloc 和 free 是函数。 new 和 delete 是预处理器是什么意思? 最佳答案 new 和 delete 是 C++ 运算符(如 +、(
我是一名优秀的程序员,十分优秀!