当前位置:首页 » 数据仓库 » sqlite数据库建表
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlite数据库建表

发布时间: 2023-02-03 19:42:46

⑴ 如何在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)");
}
这里面创建
更新数数据库
再创建一张表
就可以了
创建表的方法
和开始一样