我正在使用一个包含玩家姓名,胜利数量和损失数量的数据库表.
然后我会从主要活动,打开,更新或其他任何内容调用数据库,最后关闭.
这工作得很好.
然后我添加了其他列并继续工作.
但是,我将游戏安装到真实设备上并且无效.
我的模拟器中没有发生这个问题,因为它有点一次又一次地覆盖现有数据库.
我决定从模拟器中取消应用程序,然后停止工作.看起来我的游戏在首次启动时创建新数据库时遇到了一些麻烦.
在做了一些测试之后,我得到了不同的错误,比如"not null constrain"或"CursorIndexOutOfBounds".
因此,我可以说问题在于数据库的创建 - 但我不知道出了什么问题.
我不认为错误是在主Activity中,因为我在那里总是做同样的事以前它曾经工作,但我已经改变了数据库.
也许问题是我在onCreate()函数中初始化值的地方,就像它没有真正给数据库赋值?
无论如何,也许我一直在关注错误的观点,所以我认为新的观点可能有所帮助.
这里有数据库类:
public class DatabaseAdapter {
private final Context context;
public static final String C_COLUMNA_ID = "_id";
public static final String C_COLUMNA_NAME = "menu_player";
public static final String C_COLUMNA_VICTORY = "menu_victory";
public static final String C_COLUMNA_LOSS = "menu_loss";
public static final String C_COLUMNA_POINTS = "menu_points";
public static final String C_COLUMNA_UNLOCKED = "menu_unlocked";
public static final String C_COLUMNA_LEVEL = "menu_level";
private static final String …Run Code Online (Sandbox Code Playgroud) 我已经构建了一个Android应用程序,我insertSampleData()
从onCreate()主要活动的方法调用该方法.
问题是onCreate()每次启动应用程序时都会调用该方法,这会导致我的数据库填充大量样本数据.
我想在安装应用程序时只提供一次示例数据.谁能告诉我怎么做?非常感谢 !
PS:该方法insertSampleData()用于将样本数据插入到Sq-lite数据库中.
我更新我想用搜索corrent POS机inspectionid,activityid,subactivityid但调用更新状态换货即时得到这个error.can有人帮助的时候。
public int updateSubActivityActivityComment(String comment, int rating, int subActivityId, int activityId, int inspectionId){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_RATING, rating);
contentValues.put(KEY_COMMENT, comment);
return db.updateWithOnConflict(TABLE_INSPECTION, contentValues,KEY_SUB_ACTIVITY_ID+ " = ? "+subActivityId+" AND "+KEY_INSPECTION_ID + " = ? "+inspectionId +" AND "+KEY_ACTIVITY_ID +" = ? "+activityId,new String[]{String.valueOf(subActivityId)} ,SQLiteDatabase.CONFLICT_IGNORE);
}
Run Code Online (Sandbox Code Playgroud)
日志猫
java.lang.IllegalArgumentException: Too many bind arguments. 3 arguments were provided but the statement needs 2 arguments.
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:68)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1574)
at …Run Code Online (Sandbox Code Playgroud) 我可以用sqldf包来计算"avg""count"和"sum".我能定义自己的标准偏差函数吗?
我真的有必要使用sqldf来计算标准偏差.
sqlQuery = "INSERT INTO community_market" +
"VALUES (" + a.transaction_id + ",'" + a.community_name + "'," +
a.community_id + ",'" + a.item_name + "'," +
a.item_quantity + "," + a.price + ");";
Run Code Online (Sandbox Code Playgroud)
这是我试图运行的查询,我得到的错误是:
SqliteSyntaxException:near"1":语法错误Mono.Data.SqliteClient.SqliteCommand.GetNextStatement(IntPtr pzStart,System.IntPtr&pzTail,System.IntPtr&pStmt)Mono.Data.SqliteClient.SqliteCommand.ExecuteReader(CommandBehavior behavior,Boolean want_results,System. Int32和rows_affected)Mono.Data.SqliteClient.SqliteCommand.ExecuteReader(CommandBehavior behavior)Mono.Data.SqliteClient.SqliteCommand.ExecuteDbDataReader(CommandBehavior behavior)System.Data.Common.DbCommand.ExecuteReader()System.Data.Common.DbCommand.System. Data.IDbCommand.ExecuteReader()
可以使用一些帮助
希望有人在Android上使用SQLlite更加知识,能够为这个"测验"提供有用的评论,感谢事先:
创建一个简单的表
String CREATE_DIRBLE_COUNTRIES_TABLE = "CREATE TABLE " + DIRBLE_COUNTRIES_TABLE
+ "("
+ COLUMN_DUMMY + " TEXT,"
+ COLUMN_NAME + " TEXT PRIMARY KEY,"
+ COLUMN_TITLE + " TEXT,"
+ COLUMN_DESCRIPTION + " TEXT,"
+ COLUMN_SLUG + " TEXT,"
+ COLUMN_ANCESTRY + " TEXT,"
+ COLUMN_COUNTRYCODE + " TEXT,"
+ COLUMN_REGION + " TEXT,"
+ COLUMN_SUBREGION + " TEXT"
+ ")";
db.execSQL (CREATE_DIRBLE_COUNTRIES_TABLE);
Run Code Online (Sandbox Code Playgroud)
然后检查该表是否有重复项,因此:
String Query = "Select * from " + table + " where " + column + …Run Code Online (Sandbox Code Playgroud) 我通过使用以下代码保存图像uri
public void insert (Uri image) throws SQLiteException {
SQLiteDatabase database = mdb.getWritableDatabase();
ContentValues cv = new ContentValues();
try {
InputStream iStream = getContentResolver().openInputStream(image);
byte[] inputData = com.example.tony.monthlyexpenses.Utils.getBytes(iStream);
cv.put(MyDatabaseHelper.KEY_IMAGE,inputData);
}catch(IOException ioe)
{
Log.e("A", "<saveImageInDB> Error : " + ioe.getLocalizedMessage());
}
database.insert(MyDatabaseHelper.TABLE_EXPENSES, null, cv);
database.close();
}
Run Code Online (Sandbox Code Playgroud)
实用程序
public static Bitmap getImage(byte[] image) {
return BitmapFactory.decodeByteArray(image, 0, image.length);
}
public static byte[] getBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int …Run Code Online (Sandbox Code Playgroud) 我收到了有关正常工作的一段代码的崩溃报告。
异常在insertOrThrow中启动,并且是:“异常android.database.sqlite.SQLiteConstraintException:NOT NULL约束失败:HISTORY.altitude(代码1299)”。
表中所有字段都声明为NOT NULL,特别是HISTORY.altitude字段声明为“ REAL NOT NULL”
我无法理解它为NULL的可能性,因为我在insert命令上填充了几行。
任何人都有可能的想法吗?
synchronized public void addSample( long time, int method, float altitude, int accuracy )
{
...
ContentValues cv = new ContentValues();
long day = new TimeUtils.Day(time).getMillis();
cv.put(MetaData.COLUMN_DAY, day);
cv.put(MetaData.COLUMN_TIME, time);
cv.put(MetaData.COLUMN_ALTITUDE, altitude);
cv.put(MetaData.COLUMN_METHOD, method);
cv.put(MetaData.COLUMN_ACCURACY, accuracy);
long id = latestSample.mId;
id = mDb.insertOrThrow(MetaData.TABLE_NAME, null, cv); // <--- Here crash
...
}
Run Code Online (Sandbox Code Playgroud)
这里是用来定义表格的代码:
/* Inner class that defines the table contents */
public static abstract class MetaData implements BaseColumns
{
public static …Run Code Online (Sandbox Code Playgroud) 现在我正在学习Android开发,在关注我的书时,我只是想知道为什么在SQLite列名中使用大写字母?
db.execSQL("CREATE TABLE DRINK (_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "NAME TEXT, "
+ "DESCRIPTION TEXT, "
+ "IMAGE_RESOURCE_ID INTEGER);")
Run Code Online (Sandbox Code Playgroud)
通常,我使用小写字母和_仅用于Web开发.
有什么理由吗?像代码标准?
我正在尝试在WPF应用程序中使用SQLite数据库文件。我尝试搜索包装整个SQLite库的适当库。
问题是建立它。我尝试将其作为项目添加到Visual Studio中,并进行编译以获取dll文件。由于项目和子项目内部缺少依赖项,因此效果不佳。如果有人对这个库有任何期望或遇到过困难,我会真正使用该帮助,当然也非常感谢。
感谢抬头:)