`

以编程方式创建数据库表

阅读更多
前几天下了个开源的论坛系统JForum,看了一下,此论坛系统是以可编程的方式进行数据库表的创建。

研究了一下,现把具体的代码分离一下,感兴趣的朋友可以看看,以后可能会用到的。

下面是解析SQL文件的语句代码:

public class ParseDBStructFile {
 /**
  * 读取Sql文件,得到Sql语句信息列表
  * @param operation 控制Sql语句的数组
  * @param filename Sql文件所在的路径
  * @return Sql语句的信息列表
  */
 @SuppressWarnings("unchecked")
 public static List parse(String[] operation,String filename) {
  //保存Sql语句的List
  List statements = new ArrayList();

  BufferedReader reader = null;
  try {
   reader = new BufferedReader(new FileReader(filename));
   StringBuffer sb = new StringBuffer(512);

   boolean processing = false;
   char delimiter = ';';
//   String[] creators = { "CREATE INDEX", "CREATE TABLE",
//     "CREATE SEQUENCE", "DROP TABLE", "IF EXISTS",
//     "DROP SEQUENCE", "DROP INDEX" };
   String[] creators = operation;
   String line;
   while ((line = reader.readLine()) != null) {
    if (line.length() == 0) {
     continue;
    }

    char charAt = line.charAt(0);

    // Ignore comments
    if (charAt == '-' || charAt == '#') {
     continue;
    }

    if (processing) {
     sb.append(line);

     if (line.indexOf(delimiter) > -1) {
      sb.delete(sb.length() - 1, sb.length());
      statements.add(sb.toString());
      processing = false;
     }
    } else {
     for (int i = 0; i < creators.length; i++) {
      if (line.indexOf(creators[i]) > -1) {
       sb.delete(0, sb.length());

       if (line.indexOf(delimiter) > -1) {
        if (line.indexOf(';') > -1) {
         line = line.replace(';', ' ');
        }

        statements.add(line);
       } else {
        sb.append(line);
        processing = true;
       }

       break;
      }
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (reader != null) {
    try {
     reader.close();
    } catch (Exception e) {
    }
   }
  }

  return statements;
 }
}


此类用于对包含SQL语句的文件进行分析。

把SQL语句添加至一个List对象里面。其中String数组中包含数据库表创建中的一些关键字段,比如CREATE INDEX, CREATE TABLE,DROP TABLE,DROP INDEX等语句。

接着就可以创建执行Sql语句的类,以创建数据库表信息,以下是具体代码:

public class InstallTables {
 /**
  * 创建数据库表的方法
  * @param post 数据库对应的端口 
  * @param dbName 数据库名称
  * @param username 用户名
  * @param password 密码
  * @param operation 控制数据库创建表数组
  * @param filename Sql表文件的路径
  * @throws Exception
  */
 @SuppressWarnings("unchecked")
 public void install(String post,String dbName,String username,String password,String[] operation,String filename) throws Exception{
  Connection conn = DBConnection.getConnectionMySqlDB(post,dbName,username,password);
  boolean autoCommit = conn.getAutoCommit();
  Statement st = null;
  List queryList = ParseDBStructFile.parse(operation,filename);
  for(String sql:queryList){
   if (sql == null || "".equals(sql.trim())) {
    continue;
   }
   st = conn.createStatement();
   st.executeUpdate(sql);
   st.close();
  }
  conn.setAutoCommit(autoCommit);
 }
}



其中DBConnection是一个建立与数据库连接的类,参数代表了数据库的端口号、要连接的目标数据库名称、用户名、密码。

DBConnection类的具体代码:

public class DBConnection {

 public static Connection getConnectionMySqlDB(String post, String dbName,String userName,String password)
   throws Exception {
  String driver = "com.mysql.jdbc.Driver";
  String url = "jdbc:mysql://localhost:" + post + "/" + dbName;
  String user = userName;
  String pwd = password;
  Class.forName(driver);
  return DriverManager.getConnection(url, user, pwd);
 }
}



当然你也可以自己进行扩展,比如再创建与SQLServer、Oracle的连接等。

现在一切都已经完成啦,让我们做一个简单的测试:

public class testCreator{ 

    @Test 

    public void testInstallTables(){ 

       InstallTables install = new InstallTables(); 

       try { 

          String[] operation = {"CREATE TABLE","DROP TABLE"}; 

          install.install("3306", "jackdemo", "root", "jack",operation, "F:\\tables.sql"); 

       } catch (Exception e) { 

          e.printStackTrace(); 

       } 

    } 

} 



下面是tables.sql文件的内容:

DROP TABLE IF EXISTS jackdemo1; 

CREATE TABLE jackdemo1 ( 

        id int primary key auto_increment, 

        name varchar(50), 

        age int, 

        address varchar(1000) 

); 



以上就是全部的内容,当然还可以进行表内容的添加,只要你写的Sql语句正确。

有时候看一些开源的东西,特别是看别人的代码的时候觉得自己的代码写的好不严谨呀,以后还要多多学习开源框架的源码,养成好的代码风格和习惯。

分享到:
评论

相关推荐

    MySQL中创建数据库和表的操作指南+编程知识+技术开发

    mysql创建数据库和表,MySQL中创建数据库和表的操作指南+编程知识+技术开发;mysql创建数据库和表,MySQL中创建数据库和表的操作指南+编程知识+技术开发;mysql创建数据库和表,MySQL中创建数据库和表的操作指南+...

    数据库编程数据库编程数据库编程数据库编程

    数据库编程是IT领域中的核心部分,它涉及到如何设计、创建、维护和操作数据库,以便有效地存储和检索数据。本文将深入探讨数据库编程的关键概念、技术和最佳实践。 首先,我们需要理解数据库的基本构造。数据库是一...

    数据库原理及应用实验一(创建数据库和表)

    数据库原理及应用实验一(创建数据库和表),一、 实验目的 熟悉SQL Server Management Studio;掌握通过SQL Server Management Studio管理数据库的方法;掌握数据库及其物理文件的结构关系;掌握通过SQL Server ...

    php&mysql 无需编程轻松创建数据库网站

    无需编程轻松创建数据库网站&gt;&gt; 凌锋 编著php&mysql 未注册不完全版电子书

    MySQL讲解及创建数据库表

    01A MySQL讲解及创建数据库表.wmv 01B MySQL讲解及创建数据库表.wmv 02A 创建项目并实现JDBC访问数据库.wmv 02B 创建项目并实现JDBC访问数据库.wmv 02C 创建项目并实现JDBC访问数据库.wmv 03A ORM实现数据的保存.wmv...

    怎样通过PHP连接MYSQL数据库、创建数据库、创建表-PHP编程教程.docx

    PHP 连接 MYSQL 数据库、创建数据库、创建表教程 PHP 是一种广泛使用的服务器端脚本语言,经常与 MYSQL 数据库结合使用。本文档将详细介绍如何通过 PHP 连接 MYSQL 数据库、创建数据库和创建表。 一、PHP 连接 ...

    Java根据实体创建Mysql数据库表

    - 当应用启动时,Hibernate会读取配置,扫描实体类,然后根据元数据生成相应的SQL语句,执行这些语句以创建数据库表。 6. **注意事项**: - 数据库表的命名策略可以通过`@Table(name = "table_name")`自定义,...

    C# 创建数据库、数据表

    在C#编程环境中,创建数据库和数据表是常见的任务,特别是在开发基于.NET Framework的应用程序时。Visual Studio(如VS2013)提供了一个强大的集成开发环境(IDE),结合SQL Server(例如SQL2008)数据库管理系统,...

    PHP&MySQL无需编程轻松创建数据库网

    PHP&MySQL无需编程轻松创建数据库网。还不错,好好看看。

    UJOB项目-MySQL讲解及创建数据库表

    01A MySQL讲解及创建数据库表.wmv 01B MySQL讲解及创建数据库表.wmv 02A 创建项目并实现JDBC访问数据库.wmv 02B 创建项目并实现JDBC访问数据库.wmv 02C 创建项目并实现JDBC访问数据库.wmv 03A ORM实现数据的保存.wmv...

    动态创建数据库及数据库表

    在IT领域,动态创建数据库和数据库表是一项常见的需求,特别是在软件开发中,尤其是当系统需要根据用户需求或特定条件自动生成数据存储结构时。VB(Visual Basic)是一种流行的编程语言,它提供了丰富的功能来实现...

    C#操作Mysql创建数据库,数据表,增、删、改数据

    本教程将详细介绍如何使用C#与Mysql进行交互,包括创建数据库、数据表以及执行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要在C#项目中引入Mysql的数据提供者——`MySql.Data.dll`。这个库允许...

    PHP & MySQL 无需编程轻松创建数据库网站

    PHP & MySQL 无需编程轻松创建数据库网站

    SQLite(创建数据库)

    3. **创建数据库**:连接到SQLite后,如果没有指定数据库,SQLite会默认创建一个名为`sqlite3.db`的临时数据库。若要创建特定名称的数据库,可以使用`CREATE DATABASE`语句,但在SQLite中,这通常是通过直接打开相应...

    数据库创建表编程

    数据库创建表编程.

    PHP_MySQL无需编程轻松创建数据库网站

    在“无需编程轻松创建数据库网站”的主题下,用户将学习如何利用Dreamweaver的内置模板和向导功能来快速搭建网站框架,并设置与MySQL数据库的连接。这通常包括以下步骤: 1. **设置数据库连接**:在Dreamweaver中...

    易语言创建Access数据库

    2. **创建数据库表**:在建立连接后,我们需要定义表的结构,包括字段名、字段类型(如文本、数字、日期/时间等)、字段长度等。易语言提供了“创建表格”命令,可以方便地创建数据库表,并通过“添加列”命令来设置...

    数据库编程实例——数据库基本操作

    首先,让我们讨论如何创建数据库。在大多数数据库管理系统(如MySQL、SQL Server或Oracle)中,创建一个新的数据库通常通过执行CREATE DATABASE语句来完成。例如,创建一个名为"StudentManagement"的数据库,SQL命令...

    精彩编程与编程技巧-用代码创建数据库,表,字段...

    精彩编程与编程技巧-用代码创建数据库,表,字段 ...

    网络编程和数据库编程学习案例

    除此之外,Entity Framework是一个更高级别的ORM(对象关系映射)框架,它可以简化数据库操作,让开发者能以面向对象的方式处理数据库事务。 数据库编程中,了解SQL语言是必不可少的。SQL(结构化查询语言)用于...

Global site tag (gtag.js) - Google Analytics