如何在数据库动态建表

如何在数据库动态建表,第1张

动态建表首先需要了解Statement类

Statement 对象用 Connection 的方法createStatement 创建,例如

//创建连接对象

Connection connection = DBUtil.getConnection()

//创建Statement对象

Statement statement=connection.createStatement()

创建完之后通过执行以sql语句为参数的Statement的方法,来执行sql语句完成对数据库的 *** 作。

Statement共有三种方法,分别是 executeQuery、executeUpdate 和execute。

方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。

方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATE TABLE 或 DROP TABLE 等不 *** 作行的语句,executeUpdate 的返回值总为零。如果没有进行 *** 作就返回-1。

方法 execute用于执行返回多个结果集、多个更新计数或二者组合的语句,我们不会需要该高级功能,所以本概述就不进行介绍了。

动态建表实例:

String tablename="WrongExpression"

sql = "create table "+tablename+"(time varchar(255),expression varchar(20),result varchar(20))"

int result = stmt.executeUpdate(sql)// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功

Class.forName("oracle.jdbc.driver.OracleDriver")

Connection conn=DriverManager.getConnection("数据库url","帐号","密码")

state=conn.createStatement()

state.executeUpdate("create 建表语句")

state.executeUpdate("insert 插入数据")------>插入的值由页面获得,注意字符串拼接。

然后就是关闭连接,state.close()conn.close()

核心代码就是这些,具体应用你可以多写几个方法(增删改查),都是类似的,注意异常的处理,关闭连接最好在finally中进行。

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)

}

}


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

原文地址: http://outofmemory.cn/sjk/10027441.html

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

发表评论

登录后才能评论

评论列表(0条)

保存