插入列,并就如何设置一些如自动增量和primarykeys插入列使用过Android Studio采用了android工作室SQLite数据库
回答
如果设置列类型为INTEGER PRIMARY KEY
,如果你不指定值插入一行时,则一个值(64位有符号整数)将被分配一个未使用的整数,通常大于最大值。
您很可能不需要使用AUTOINCREMENT
关键字(这会分配一个在数据库内而不是在表级别唯一的整数,因此在确定该整数时会有开销)。
使用常见_id,所以会经常会看到
db.execSQL("CREATE TABLE tablename (_id INTEGER PRIMARY KEY, column_name column_type, ...more column_name/column_types as required...);");
作为一个例子,以下代码使用SQLiteOpenHelper(未需要的,但经常使用的),的一个子类,其需要一个onCreate
方法(,在创建数据库时调用,例如第一次使用助手时使用)和onUpgrade
方法(如果版本号增加/增加,则需要)。
该代码将创建,如果需要的话,数据库名为MYDB (文件名mydb.sqlite用于支持扩展超过3个字符更高版本的操作系统)。
- 注如果需要的话是只是一次(一些罕见的例外)除非数据库被删除。即
onCreate
在每次构建帮助程序的实例时都不会调用,只有在数据库文件本身不存在时才会调用onCreate
(同样适用罕见的例外情况)。
然后,如果创建数据库,则在数据库中创建一个名为testfloat的表。该表将由2列组成,即_id和myfloat。
的_id列类型是INTEGER PRIMARY KEY,如果插入行和当该列没有指定值,那么这将是一个独特的递增的整数(1起初,然后2 ... ...)。
的myfloat列的类型FLOAT(也许为SQLite的在问候灵活性数据类型结帐Datatypes In SQLite Version 3),如果插入一行然后0.0的值将给出当未给出一个值。
public class MyDBHelper extends SQLiteOpenHelper {
public static final String DBNname = "mydb";
public static final int DBVersion = 1;
public static final String TESTFLOATTABLE = "testfloat";
public static final String STDIDCOL = "_id INTEGER PRIMARYKEY";
public static final String MYFLOATCOL = "myfloat";
public static final String MYFLOATTYPE = " FLOAT DEFAULT 0.0";
public MyDBHelper(Context context) {
super(context,DBNname,null,DBVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " +
TESTFLOATTABLE +
"(" +
STDIDCOL +
"," +
MYFLOATCOL +
MYFLOATTYPE +
")");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldeversion, int newversion) {
}
public long insertRow(double myfloatvalue) {
long rv;
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(MYFLOATCOL,myfloatvalue);
rv = db.insert(TESTFLOATTABLE,null,cv);
return rv;
}
public Cursor getAllMyFloats() {
Cursor rv;
SQLiteDatabase db = getReadableDatabase();
rv = db.query(TESTFLOATTABLE,null,null,null,null,null,null);
return rv;
}
}
上面的代码中有onUpgrade的空方法。此外,还有两种方法可以返回一个Cursor,在这种情况下,包含所有列的所有行都可以使用insertRow(插入一行)和getAllMyFloats。
在你调用的活动,你可以沿着线做一些事情: -
MyDBHelper mydbhelper = new MyDBHelper(this);
mydbhelper.insertRow(1.3);
mydbhelper.insertRow(1);
mydbhelper.insertRow(5.674389123459834);
第一行获得一个MyDBHelper实例,它第一次运行时会创建数据库,并在此过程中调用onCreate
方法,从而创建表格。
接下来的三行调用insertRow
方法(注意,如果应用程序重新运行,将会添加3个额外的行........即代码用于演示),这将导致添加3行,第一将在_id列有1,在接下来的2等
下面的代码(从上面的代码下面上)显示获取和询问一光标: -
Cursor getfloats = mydbhelper.getAllMyFloats();
Log.d("TESTFLOAT","Rows returned from getALlFloats = " + getfloats.getCount());
while (getfloats.moveToNext()) {
Log.d("TESTFLOAT","Via getString = " + getfloats.getString(getfloats.getColumnIndex(mydbhelper.MYFLOATCOL)));
Log.d("TESTFLOAT","Via getFloat = " + Float.toHexString(
getfloats.getFloat(
getfloats.getColumnIndex(
mydbhelper.MYFLOATCOL
)
)
));
Log.d("TESTFLOAT","Via getDouble = " +Double.toString(
getfloats.getDouble(
getfloats.getColumnIndex(
mydbhelper.MYFLOATCOL
)
)));
}
getfloats.close();
第一行调用返回游标的getAllMyFLoats
。 下一行将显示一条日志消息,详细说明生成的游标中有多少行。 如果游标中有任何行,则while子句将横切游标。对于每一行,它都会得到myfloat列的值,使用一些cursor.get ?????方法(以演示如何使每个值受到影响)。请注意,而不是getfloats.get????(getfloats.getColumnIndex(column))
,getfloats.get????(1)
将工作。
- 1. 采用了android工作室
- 2. 采用Android工作室
- 3. Android的工作室 - 检索数据从SQLite数据库,并插入到微调
- 4. 插入SQLite数据库android
- 5. Android SQLite数据库错误插入列
- 6. 插入数据到android的sqlite数据库不起作用
- 7. 在Android工作室的数据库插入图像
- 8. TableLayout用的TextView和EditText上采用了android工作室
- 9. 插入文本文件数据到SQLite数据库使用android
- 10. android - 使用SQLite数据库
- 11. Android SQLite数据库插入/选择不工作
- 12. 我需要在我火力地堡数据库下FirebaseAuthentication用户ID数据采用了android工作室
- 13. 错误,同时采用了Android 2.1.2工作室
- 14. 安卓:创建采用了android工作室
- 15. 错误与Android工作室打开SQLite数据库
- 16. 添加外部SQLite数据库到android工作室
- 17. 在sqlite数据库中插入datetime android
- 18. Android:在Sqlite数据库中插入datetime
- 19. Android SQLite数据库:缓慢插入
- 20. 使用数据库的例子与Android工作室
- 21. 使用数据库一样采用Android
- 22. 混淆将CSV文件插入到SQLite数据库Android Studio
- 23. Android SQLite插入数据
- 24. Android SQLite数据插入
- 25. 的Android工作室切换布局时,设备采用了android工作室旋转
- 26. Android/SQLite。通过过滤在数据库中插入多个值?
- 27. 在Android工作室(SQLite数据库)的列中的所有值的总和
- 28. 用Android Studio将数据插入到SQLITE中
- 29. 做一个独立的库(JAR)也使用了OpenCV的lib采用了android工作室
- 30. 采用了Android与现有的SQLite