⑴ 如何在Eclipse環境下,使用sqlite資料庫中建立多個表
在eclipse中需要自定義創建表工具類:
比如;
1、寫一個DBHelper繼承自SQLiteOpenHelper
public class DBHelper extends SQLiteOpenHelper{
//資料庫的版本
private final static int DB_VERSION = 1;
//資料庫名
private final static String DB_NAME = "ladeng.db";
private Context mContext;
//我們直接用super調用父類的構造方法,這樣我們在實例化DBHelper的時候只需要傳入一個上下文參數就可以了
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.mContext = context;
}
//資料庫不存在的時候,調用這個方法
@Override
public void onCreate(SQLiteDatabase db) {
createTables(db,0,0);
}
//版本號發生變化的時候,調用這個方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//1.刪除原來的表
//2.調用onCreate重新創建資料庫
}
/**
* 建表語句,只需要一行就能建一個表
*/
private void createTables(SQLiteDatabase db, int oldVersion, int newVersion) {
//createTable(Movie.class)返回的是sql建表語句
//db.execSQL(sql) 執行這條建表語句
db.execSQL(createTable(Movie.class));
}
/**
* 如果沒傳表明的話,默認使用類名作為表明
* @param clazz 實體類
* @return
*/
private <T> String createTable(Class<T> clazz){
return createTable(clazz, clazz.getSimpleName());
}
/**
* 真正的建表方法
* @param clazz 實體類
* @param tableName 表明
* @return sql建表語句
*/
private <T> String createTable(Class<T> clazz , String tableName){
//實例化一個容器,用來拼接sql語句
StringBuffer sBuffer = new StringBuffer();
//sql語句,第一個欄位為_ID 主鍵自增,這是通用的,所以直接寫死
sBuffer.append("create table if not exists "+ tableName + " "+
"(_ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,");
//得到實體類中所有的公有屬性
Field[] fields = clazz.getFields();
//遍歷所有的公有屬性
for(Field field : fields){
//如果屬性不為_id的話,說明是新的欄位
if (!field.getName().equals("_id")) {
//得到屬性的基本數據類型
String type = field.getType().getSimpleName();
//如果是String類型的屬性,就把欄位類型設置為TEXT
if (type.equals("String")) {
sBuffer.append(field.getName()+" TEXT,");
//如果是int類型的屬性,就把欄位類型設置為INTEGER
}else if (type.equals("int")) {
sBuffer.append(field.getName()+" INTEGER,");
}
}
}
//將最後的逗號刪除
sBuffer.deleteCharAt(sBuffer.length()-1);
//替換成); 表明sql語句結束
sBuffer.append(");");
//返回這條sql語句
return sBuffer.toString();
}
}
2、Movie實體類,實體類中的屬性就是表中的欄位
public class Movie {
public String title;
public int rating;
public String year;
public String genre;
public String country;
public int price;
}
3、在MainActivity.java中添加如下代碼
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//實例化我們的DBHelper
DBHelper dbHelper = new DBHelper(this);
//調用了這個方法後,DBHelper中的onCreate才會執行
dbHelper.getReadableDatabase();
}
}
4、創建結果:
⑵ sqlite怎麼使用資料庫創建表
CREATE TABLE語句的基本語法如下:
1
2
3
4
5
6
7
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
CREATE TABLE是告訴資料庫系統關鍵字,創建一個新的表。獨特的名稱或標識如下表CREATE TABLE語句。也可以選擇指定DATABASE_NAME連同table_name。
例子:
下面是一個例子,創建了一個公司ID作為主鍵的表和NOT NULL的約束顯示這些欄位不能為NULL,同時創建該表中的記錄:
1
2
3
4
5
6
7
sqlite> CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
創建一個表
1
2
3
4
5
sqlite> CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT NOT NULL
);
如果表驗證已成功創建使用SQLite命令.tables命令,將用於列出了附加的資料庫中的所有表。
⑶ sqlite如何提前createtable
解決辦法:創建SQLite資料庫中表的語法和其它資料庫創建表基本一致,其sql語法如下:
CREATE TABLE table_name(
column_name1 datatype1 [extra_info1],
column_name2 datatype2 [extra_info2],
column_name3 datatype3 [extra_info3],
.....
column_namen datatype4 [extra_info4]
);
使用CREATE TABLE來指定創建表,其table_name是我們需要創建的表的名稱,一般使用字母,數據和下劃線。
資料庫表中的名稱應在資料庫中唯一,不得和其它表名重復,但不同的資料庫中可以有相同的表名。
一般表名習慣是以t_開頭,後接表的名稱,多個單字用下劃線分隔。如t_web,t_user_info。
表中的列一般包括3個信息,分別為列名,列類型和附加信息。
列名,表示該列存儲的信息名稱,惟一。
列類型,用於指定數據類型。具體可查看SQLite 數據類型信息。
附加信息一般可選,一般用於描述是否為主鍵,默認信息或其它修飾信息。
實例
下面我們來創建一個名為t_student的表,其含有三個信息分別為:
Id:編號,整數型,主鍵。
name:姓名,字元串,不為空。
score:成績,實數型,不為空。
這樣我們創建表的sql語句為:
create table t_student(
id int primary key not null,
name text not null,
score real
);
注意:sql語句不區分大小寫。
運行如下:
sqlite> create table t_student(
...> id int primary key not null,
...> name text not null,
...> score real
...> );
sqlite> .schema t_student
CREATE TABLE t_student(
id int primary key not null,
name text not null,
score real
);
SQLite快速創建表
由於SQLite的數據類型是弱類型的,即存儲的數據可以是數據類型具有五種任意類型。所以在創建表時也可以不指定表的數據類型,即數據類型是可選的。
如我們創建一個含有a,b,c,d,e,f五列的表,但並未指定數據類型,所以這5列是可以存儲任意的數據類型。
sqlite> create table t_test4(a,b,c,d,e);
sqlite> .schema t_test4
CREATE TABLE t_test4(a,b,c,d,e);
隨手分享,手有餘香
位元組流是站長多年來的工作經驗和技術總結,和站長一起學習,每天都有進步。
通俗易懂,深入淺出。
文章不深奧,不需要鑽研,不燒腦細胞,人人都可以學習,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。
⑷ sqlite_get_table為什麼會自動創建表格
sqlite的機制或者是自動備份功能。
慮到id是自增長的,資料庫中應該有系統表來保存相關信息,用sqliteman打開數據文件發現確實存在這樣一張系統表sqlite_sequence。表中保存了表名和自增長的欄位(一般就是主鍵id)的當前值,測試了下,如果包含自增長欄位的表沒有插入過數據,不會保存在此表裡,只要曾經插入過數據,無論當前是否有數據,該值都會存在。
做Android開發其實經常打開sqlite數據文件,以前也看到過系統表,只是從來沒有研究過,趁此機會看個明白。在sqlite資料庫文件中,一旦你建表,就會在系統目錄(SystemCatalogue)下自動生成2個系統表sqlite_master和sqlite_sequence。sqlite_master保存了所有表的信息,包括type,是table或者index等,name和tbl_name,二者看起來內容一樣。還有一個rootpage,可能是建表順序。sql在類型是table的時候就是建表的sql語句。當你的表中有自增長的欄位時,sqlite_sequence就會保存下表名和該欄位的序列值,當然前提是你已經插入過數據,否則不會保存。
⑸ 如何創建動態的SQLite資料庫表
public FontDaoImpl(){
//在構造方法里邊進行判斷,看是否在sqlite里邊有tb_font這張表,如果沒有的話,在sqlite裡面自動創建表
try {
conn = DBConnection.getConnection(Constants.DATABASE_PATH_STYLE);
final int cnt = conn
.prepareStatement(
"SELECT COUNT(*) as CNT FROM sqlite_master where type='table' and name='TB_FONT'")
.executeQuery().getInt(1);
if (cnt != 1) {
statement = conn.createStatement();
statement
.execute("CREATE TABLE TB_FONT (id integer primary key autoincrement, name NVARCHAR2(20),description NVARCHAR2(1000),fontSize number(20),textBorderColor NVARCHAR2(10),textBackgroundColor NVARCHAR2(10),textColor NVARCHAR2(10),isDefault NVARCHAR2(4))");
//statement.execute("CREATE UNIQUE INDEX id ON TB_CURVELINE (id)");
statement.close();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBConnection.closeConnection(conn);
}
}
⑹ android中怎樣在sqlite中創建一個資料庫然後在該資料庫中創建兩個表
public class DBOpenHelper extends SQLiteOpenHelper {
private static final String DATABASENAME = "test.db"; //資料庫名稱
private static final int DATABASEVERSION = 1;//資料庫版本,大於0
public DBOpenHelper(Context context) {
super(context, DATABASENAME, null, DATABASEVERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20), amount integer)");//創建表 person
db.execSQL("CREATE TABLE peson2(personid integer primary key autoincrement, name varchar(20), amount integer)");//創建表 person2
}
}
這個是Android默認的資料庫操作類,可以可以獲得資料庫操作對象,第一次使用時會調用onCreate方法,創建表格。第二次進行將不會被重復調用。
⑺ 如何在一個sqlite資料庫中創建多個表
這個是onCreate這句話的毛病
它只負責創建資料庫。
建議是在
public
void
onUpgrade(SQLiteDatabase
db,
int
oldVersion,
int
newVersion)
{
db.execSQL("create
table
sunCount(id
integer
primary
key
autoincrement,conut
integer)");
}
這裡面創建
更新數資料庫
再創建一張表
就可以了
創建表的方法
和開始一樣