JavaFX程序初次运行创建数据库并执行建表SQL详解

 更新时间:2019年08月07日 08:53:04   作者:杨超杰  
这篇文章主要介绍了JavaFX程序初次运行创建数据库并执行建表SQL详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在我的第一个JavaFX程序完成安装的时候才突然发现,不能要用这个软件还要手动执行Sql来建表吧?

于是我的想法是在Main程序中执行时检测数据库连接状况,如果没有检测到数据库或者连接异常,那么出现错误提示,如果数据库连接没有问题那么自动创建数据库并执行建表Sql进行初始化。

package oa.util; 
import java.io.IOException;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties; 
import org.apache.ibatis.jdbc.ScriptRunner;
import com.ibatis.common.resources.Resources;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement; 
public class CreateMySqlDatabase { 
  public static void createDatabase() throws SQLException {
    Connection conn;
    conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "1234");
    Statement stmt = (Statement) conn.createStatement();
    String sql = "CREATE DATABASE UTILITY";
    stmt.executeUpdate(sql);
  }     
  public static void executeSql() throws IOException, SQLException {
    Properties props = Resources.getResourceAsProperties("mysql.properties");
    String url = props.getProperty("jdbc.url");
    String username = props.getProperty("jdbc.username");
    String password = props.getProperty("jdbc.password");
    Connection conn = (Connection) DriverManager.getConnection(url, username, password);
    ScriptRunner runner = new ScriptRunner(conn);
    runner.setErrorLogWriter(null);
    runner.setLogWriter(null);
    runner.runScript(Resources.getResourceAsReader("sql/utility.sql"));
    conn.close();
    System.out.println("==SUCCESS==");
  }
}

需要用到 ibatis-common-2.jar读取mysql.properties文件中的JDBC信息。

MAIN做判断:

try {
      DriverManager.getConnection("jdbc:mysql://localhost:3306/utility", "root", "1234");
      isError = false;
    } catch (MySQLSyntaxErrorException e) {
      primaryStage.setTitle("正在创建Utility数据库……");
      Label error = new Label("正在创建Utility数据库……");
      error.setFont(new Font("Cambria", 100));
      Pane pane = new Pane();
      pane.getChildren().add(error);
      Scene scene = new Scene(pane);
      primaryStage.setScene(scene);
      primaryStage.show();
      try {
        CreateMySqlDatabase.createDatabase();
        CreateMySqlDatabase.executeSql();
        isError = false;
        primaryStage.close();
      } catch (SQLException | IOException e1) {
        primaryStage.close();
        e1.printStackTrace();
      }
 
    } catch (SQLException se) {
      Thread.sleep(3000);
      primaryStage.close();
      se.printStackTrace();
    }
 
    if (!isError) {
      run();
    }
 
  } 
  public static void main(String[] args) {
    launch(args);
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 出现次数超过一半(50%)的数

    出现次数超过一半(50%)的数

    给出n个数,需要我们找出出现次数超过一半的数,下面小编给大家分享下我的实现思路及关键代码,感兴趣的朋友一起学习吧
    2016-07-07
  • spring boot 实现配置多个DispatcherServlet最简单方式

    spring boot 实现配置多个DispatcherServlet最简单方式

    这篇文章主要介绍了spring boot 实现配置多个DispatcherServlet最简单方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • ElasticSearch合理分配索引分片原理

    ElasticSearch合理分配索引分片原理

    这篇文章主要介绍了ElasticSearch合理分配索引分片原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • MyBatis配置与CRUD超详细讲解

    MyBatis配置与CRUD超详细讲解

    这篇文章主要介绍了MyBatis配置与CRUD,CRUD是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。CRUD主要被用在描述软件系统中数据库或者持久层的基本操作功能
    2023-02-02
  • kotlin java 混合代码 maven 打包实现

    kotlin java 混合代码 maven 打包实现

    这篇文章主要介绍了kotlin java 混合代码 maven 打包实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • SpringMVC统一异常处理实例代码

    SpringMVC统一异常处理实例代码

    这篇文章主要介绍了SpringMVC统一异常处理实例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • list的4种遍历方式(实例讲解)

    list的4种遍历方式(实例讲解)

    下面小编就为大家带来一篇list的4种遍历方式(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 浅谈Java绝对布局

    浅谈Java绝对布局

    这篇文章主要介绍了Java当中的绝对布局,还举了一个简单的实例,需要的朋友可以参考下。
    2017-08-08
  • Netty事件循环主逻辑NioEventLoop的run方法分析

    Netty事件循环主逻辑NioEventLoop的run方法分析

    这篇文章主要介绍了Netty事件循环主逻辑NioEventLoop的run方法分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 基于idea 的 Java中的get/set方法之优雅的写法

    基于idea 的 Java中的get/set方法之优雅的写法

    这篇文章主要介绍了基于idea 的 Java中的get/set方法之优雅的写法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论