在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”就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)