插入列,並就如何設置一些如自動增量和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