- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想在我的 Android 应用程序中使用 SQlite 来存储一些数据。在尝试运行该应用程序后我收到了这个错误:
06-21 16:14:30.175 2375-2375/snet.app E/SQLiteLog﹕ (1) no such table: tracks.db
06-21 16:14:30.176 2375-2375/snet.app E/SQLiteDatabase﹕ Error inserting title=Goldchains _id=null artist=Marlin album=Filet Mignon - Volume II
android.database.sqlite.SQLiteException: no such table: tracks.db (code 1): , while compiling: INSERT INTO tracks.db(title,_id,artist,album) VALUES (?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
at snet.tuberlin.app.DBHandler.addTrack(DBHandler.java:64)
at snet.tuberlin.app.TrackInformations$1.onReceive(TrackInformations.java:91)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我尝试了我在谷歌中找到的所有方法来解决这个问题,包括更改数据库版本。它可以工作,但在再次尝试运行该应用程序后,它又回到了同样的错误。这是我的 DBHandler 类:
public class DBHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 6;// as you can see i changed the version many time already !!
private static final String DATABASE_NAME = "tracks.db";
public static final String TABLE_TRACKS = "tracks";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_TITLE = "title";
public static final String COLUMN_ARTIST = "artist";
public static final String COLUMN_ALBUM = "album";
public static final String COLUMN_LOCATION = "location";
public DBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
final String DATABASE_CREATE = "create table "
+ TABLE_TRACKS + "(" + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_TITLE
+ " text not null, " +COLUMN_ARTIST
+ " text not null, " + COLUMN_ALBUM
+ " text not null);";
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRACKS);
onCreate(db);
}
/*Add new row to the DB*/
public void addTrack(UserTrack usertrack) {
ContentValues values = new ContentValues();
values.put(COLUMN_ID, usertrack.getUserTrackId());
values.put(COLUMN_TITLE, usertrack.getTitle());
values.put(COLUMN_ARTIST, usertrack.getArtist());
values.put(COLUMN_ALBUM, usertrack.getAlbum());
SQLiteDatabase db = getWritableDatabase();
db.insert(DATABASE_NAME, null, values);
db.close();
}
}
最佳答案
只需在 addTrack 方法中更改为 db.insert(TABLE_TRACKS, null, values);
。
您提供的是数据库名称而不是表名称,因此出现错误。
更正下面的代码
public void addTrack(UserTrack usertrack) {
ContentValues values = new ContentValues();
values.put(COLUMN_ID, usertrack.getUserTrackId());
values.put(COLUMN_TITLE, usertrack.getTitle());
values.put(COLUMN_ARTIST, usertrack.getArtist());
values.put(COLUMN_ALBUM, usertrack.getAlbum());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_TRACKS, null, values); <----change here
db.close();
}
关于android - SQLiteLog :(1) no such table: tableName. db (sqlite with android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30966745/
1) "select * from `union` WHERE `thanaId`='$thana_id'" // it's working VS2) "select * from union
我的 SQL Server 2005 数据库中的某些表被命名为 lu.[TableName] 而不是 dbo.[TableName]。卢代表什么? 注意:我已经试过谷歌了 最佳答案 这将是 SQL S
我是使用 typescript 的新手,我正在使用 typescript 和 postgres 开发 API NodeJS。 我正在使用 docker 到 postgres,并且我有以下 docker
这个问题在这里已经有了答案: 关闭 13 年前。 Possible Duplicates: Select * vs Specifying Column Names Which is faster/b
我正在用 PHP PDO 编写一个用户注册函数,我发现我的查询只有这样写才能正常运行: setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION
我正在使用 JPA,我需要将“tableName”设为一个变量。 在数据库中,我有很多表,我的代码需要访问我指定要读取的表。 @Entity @Table(name = "tableName") pu
我关注了这个YouTube tutorial首先尝试使用无服务器框架开发无服务器 rest api。它给出了 MissingRequiredParameter 的错误并将初始化的表名称设置为未定义。
这个问题在这里已经有了答案: MySQL: NULL vs "" (12 个答案) MySQL, better to insert NULL or empty string? (6 个答案) 关闭
我目前正在学习 hibernate,无法从 oracle 获取数据。非常感谢任何帮助。 请找到下面的配置文件、pojo类和main方法... hibernate .cfg.xml
我的应用程序中有一个 JDBCAppender,我想为其设置 main argument lookup 中的 tableName 参数。 。原因是我的数据库表可以选择有一个前缀,所以我从应用程序中的配
您好,我正在尝试创建一个通用方法来从数据库中读取数据。这是我目前所拥有的: private static void GetData(string tableName, string key, stri
我通过一个网站和 html 5 视频标签,在家里制作了一个供个人使用的“电影”数据库,我轻松完成了该数据库,它包括一个索引页,列出了数据库中的所有电影,然后单击一个会将您链接到一个页面,该页面将在 h
我的 table 有这个问题。我想删除它但不起作用 我尝试删除 de .ibd 文件,他们将一些 frm 文件重命名为与 te ibd 相同的名称来删除表,但不起作用 当我删除表,然后再次创建它时,它
我在Windows 2008服务器上使用MySQL 5.1版本。当我执行以下查询时: SELECT * FROM tablename; It is taking too much time for f
最近我将一个 MySQL 数据库从一台服务器复制到另一台服务器。同时我已经从 Master DB 中清除了许多行。所以一段时间后复制正确完成。我验证了两个数据库中的数据计数,它是相同的。 之后,我只是
我正在编写一个锁定表的 MySQL 查询: "LOCK TABLE table_1 WRITE" 之后我执行了一些函数,在其中一个函数中,我在另一个我没有锁定的表上执行另一个查询: "SELECT *
我正在编写一个锁定表的 MySQL 查询: "LOCK TABLE table_1 WRITE" 之后我执行了一些函数,在其中一个函数中,我在另一个我没有锁定的表上执行另一个查询: "SELECT *
我想创建数据库并使用 Entity Framework ,但是当我运行我的 wpf 项目时,出现此错误。 2 个表出现此错误。在这里,我的错误: using (var c = new RSPDbCon
最好的方法是什么? 尝试过这样的事情: public String FormatColumnName(String columnName) { String formatedColumnNam
我在网上找不到这个问题的答案(可能是因为google不喜欢特殊字符),这种形式的查询是什么意思? Select tableName.* FROM tableName 我会说这就像 Select * f
我是一名优秀的程序员,十分优秀!