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

1.首先安装MySql数据库,并将数据库驱动程序文件mysql-connector-java-3.1.12-bin.jar放在Tomcat的common/lib中。

2.在MySQL的登陆用户名:root,密码:mysql建立数据库testdb,

3.表user 基本代码如下:

<%@ page contentType="text/htmlcharset=gb2312"%>

<%@ page language="java" import="java.sql.Statement" import="java.sql.*" %><html>

<head>

<title>helloworld.jsp</title>

</head>

<body>

<%

try{

Class.forName("org.gjt.mm.mysql.Driver")

out.println("加载Mysql Driver成功!<br>")

} catch(Exception e)

{

out.println("加载Mysql Driver失败!<br>")

e.printStackTrace()

}

try{

out.println("开始连接Mysql server!<br>")

Connection connect=DriverManager.getConnection("jdbc:mysql://localhost/testdb?user=root&password=mysql&useUnicode=true&characterEncoding=8859_1")

//jdbc:mysql://localhost/testdb?user=root&password=mysql&useUnicode=true&characterEncoding=8859_1

//jdbc:mysql://localhost/数据库名user=数据库登陆用户名&password=数据库登陆密码&useUnicode=是否允许设置字符编码&characterEncoding=允许设置编码时,要设置的编码out.print("成功连接Mysql server!<br><br>")

Statement stmt = connect.createStatement()

ResultSet rs=stmt.executeQuery("select * from user")

out.print("读取数据如下:<br>")

while(rs.next())

{

out.println(rs.getInt(1))

out.println(rs.getString(2)+"<br>")

}

} catch(Exception e)

{

out.print("获得数据错误!")

e.printStackTrace()

}

%>

</body>

</html>

4.注意:如果只写import="java.sql.*" ,不写import="java.sql.Statement" 则在Statement

stmt = connect.createStatement()其中Statement下面显示是红色波浪线,程序调用数据库等一切正常。


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

原文地址:https://54852.com/sjk/6765497.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存