如何在Eclipse环境下,使用SQLite数据库中建立多个表

如何在Eclipse环境下,使用SQLite数据库中建立多个表,第1张

在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、创建结果:

不知道这个程序对你有没有帮助

package swt

import org.eclipse.swt.SWT

import org.eclipse.swt.custom.ControlEditor

import org.eclipse.swt.custom.TableCursor

import org.eclipse.swt.custom.TableEditor

import org.eclipse.swt.custom.ViewForm

import org.eclipse.swt.events.FocusEvent

import org.eclipse.swt.events.FocusListener

import org.eclipse.swt.events.KeyEvent

import org.eclipse.swt.events.KeyListener

import org.eclipse.swt.events.ModifyEvent

import org.eclipse.swt.events.ModifyListener

import org.eclipse.swt.events.SelectionEvent

import org.eclipse.swt.events.SelectionListener

import org.eclipse.swt.widgets.Composite

import org.eclipse.swt.widgets.Display

import org.eclipse.swt.widgets.Shell

import org.eclipse.swt.widgets.Table

import org.eclipse.swt.widgets.TableColumn

import org.eclipse.swt.widgets.TableItem

import org.eclipse.swt.widgets.Text

public class SimpleTable2 {

/**

* Launch the application

* @param args

*/

private Shell shell

private Composite composite

private ViewForm viewForm

private Table table

private void createShell(){

shell = new Shell()

shell.setSize(500, 375)

shell.setText("SWT Application")

createViewForm()

}

private void createViewForm(){

viewForm=new ViewForm(shell,SWT.NONE)

createComposite()

viewForm.setContent(composite)

viewForm.pack()

}

private void createComposite(){

composite=new Composite(viewForm,SWT.NONE)

createTable()

composite.pack()

}

private void createTable() {

table=new Table(composite,SWT.FULL_SELECTION)

table.setHeaderVisible(true)

table.setLinesVisible(true)

String[] header=

for(int i=0i<header.lengthi++){

TableColumn column=new TableColumn(table,SWT.NONE)

column.setText(header[i])

}

TableItem tableItem=new TableItem(table,SWT.NONE)

tableItem.setText(new String[])

tableItem=new TableItem(table,SWT.NONE)

tableItem.setText(new String[])

for(int i=0i<table.getColumnCount()i++)

table.getColumn(i).pack()

table.pack()

//add ControlEditor on TableCursor

final TableCursor cursor=new TableCursor(table,SWT.NONE)

//cursor令使用左右键选择单元格成为可能

final ControlEditor editor=new ControlEditor(cursor)

editor.grabHorizontal=true

editor.grabVertical=true

cursor.addSelectionListener(new SelectionListener(){

public void widgetDefaultSelected(SelectionEvent e) {

//当触发此事件时才创建text(并为她添加事件),并用setFocus()把她固定住

final Text text=new Text(cursor,SWT.NONE)

TableItem row=cursor.getRow()

int column=cursor.getColumn()

text.setText(row.getText(column))

text.addKeyListener(new KeyListener(){

public void keyPressed(KeyEvent e) {

if(e.character==SWT.CR){

TableItem row=cursor.getRow()

int column=cursor.getColumn()

row.setText(column,text.getText())

text.dispose()

}

}

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}

})

text.addFocusListener(new FocusListener(){

public void focusGained(FocusEvent e) {

// TODO Auto-generated method stub

}

public void focusLost(FocusEvent e) {

text.dispose() //目前认为可有可无

}

})

editor.setEditor(text)

text.setFocus() //将text固定于某个单元格上

}

public void widgetSelected(SelectionEvent e) {

table.setSelection(new TableItem[])

//当选中某行时,此行出现阴影

}

})

}

public static void main(String[] args) {

final Display display = Display.getDefault()

SimpleTable2 st=new SimpleTable2()

//

st.createShell()

st.shell.pack()

st.shell.open()

st.shell.layout()

while (!st.shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep()

}

}

}

有。

首先单击菜单栏中的“Window”项目。然后在出现的下拉菜单中选中“Appearance”命令。最后在二次显示的菜单中选中“showtoolbar”就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11346142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存