Java 判断数据库和表是否存在,若不存在,则创建

问题描述:

    一般而言,我们创建创建数据库,可以在mysql或者navicat中自定义,然后利用jdbc连接Java程序和数据库,进行数据间的增删给查操作, 有这样一个问题,当我们在设计一个项目的时候,需要在运行项目时创建数据库,但是又不能让操作者去创建数据库,这个时候,项目和数据库之间的操作就没有办法实现,因为安装好的mysql中并没有数据库,则在建立连接时无法连接。

问题分析:

我们可不可以通过Java程序判断数据库和表是否存在,若不存在,则通过Java程序创建数据库和相应的表,若存在,则返回return。

当我们安装好mysql软件的时候,系统会默认几个数据库,如下图,bxjt和hello是我自己创建的数据库,其他的三个是系统默认的数据库,这样的话,我们首先通过jdbc将Java程序和test数据库连接起来,然后判断hello数据库是否存在,若存在,则return,若不存在,则创建数据库,

问题解决:

(1)搭建数据库环境,

(2)通过jdbc利用test数据库建立Java程序和数据库的连接

(3)判断数据库和表是否存在,若存在,返回,若不存在,则建立新的数据库和表。

    1.判断数据库是否存在,若不存在,在创建


import java.sql.*;

public class testDemo{
    public static void main(String[] args) throws Exception
    {
        Class.forName("com.mysql.cj.jdbc.Driver");//加载注册       
        //一开始必须填一个已经存在的数据库
        String url = "jdbc:mysql://localhost:3306/test? 
         useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";   
        Connection conn = DriverManager.getConnection(url, "root", "lyp");//建立连接
        Statement stat = conn.createStatement();            
        String checkdatabase="show databases like \"hello\"";//判断数据库是否存在
        String  createdatabase="create  database  hello";//创建数据库     
        stat = (Statement) conn.createStatement();		 
		 ResultSet resultSet=stat.executeQuery(checkdatabase);
		 if (resultSet.next()) {//若数据库存在
			System.out.println("hello exist!");
			stat.close();
			conn.close();		
		 		 }else{
            if(stat.executeUpdate(createdatabase)==0)//若数据库不存在		 
            	//打开创建的数据库
            url = "jdbc:mysql://localhost:3306/hello?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
            conn = DriverManager.getConnection(url, "root", "lyp");
            stat = conn.createStatement();         
            stat.close();
            conn.close();
            	System.out.println("create table success!");
		 }      
    }
}

程序运行之前,MySQL中没有hello数据库,

程序运行结果如下:

2.判断数据库中是否有表存在,若不存在,则创建。


import java.sql.*;

public class testDemo{
    public static void main(String[] args) throws Exception
    {
        Class.forName("com.mysql.cj.jdbc.Driver");//加载注册
         
        //一开始必须填一个已经存在的数据库
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";   
        Connection conn = DriverManager.getConnection(url, "root", "lyp");//建立连接
        Statement stat = conn.createStatement();
         
        //创建数据库hello
      //  stat.executeUpdate("create database hello");
         
        String checkdatabase="show databases like \"hello\"";//判断数据库是否存在
        String  createdatabase="create  database  hello";//创建数据库
       
        stat = (Statement) conn.createStatement();
		 
		 ResultSet resultSet=stat.executeQuery(checkdatabase);
		 if (resultSet.next()) {//若数据库存在
			System.out.println("hello exist!");
		
		 
		 }else{
            if(stat.executeUpdate(createdatabase)==0)//若数据库不存在
		 
            	//打开创建的数据库
            stat.close();
            conn.close();
            url = "jdbc:mysql://localhost:3306/hello?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
            conn = DriverManager.getConnection(url, "root", "lyp");
            stat = conn.createStatement();
            
            //创建表test
          
            stat.executeUpdate("create table test(id int, name  int)");
            
            //添加数据
           stat.executeUpdate("insert into test values(1, 2)");
            stat.executeUpdate("insert into test values(2, 3)");
            
            //查询数据
            ResultSet result = stat.executeQuery("select * from test");
            while (result.next())
            {
            	System.out.println(result.getInt("id") + " " + result.getString("name"));
            }
            
            //关闭数据库
              result.close();
            stat.close();
            conn.close();
            	System.out.println("create table success!");
		 }
       
    }
}

运行结果如下

参考代码::

package test;
 
import java.io.IOException;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
 
public class test {
 
	 public static String url =
	 "jdbc:mysql://192.168.1.102:3306/*****_orders";
	 public static String user = "*****";
	 public static String password = "123456";
	public static void main(String[] args) throws ClassNotFoundException,
			IOException, SQLException, ParseException {
 
		 String createBrandDatabase = "create table "
		 + "userbrandtime"
		 +
		 "(uid int(10) unsigned NOT NULL,brand_ids int(10) unsigned NOT NULL,timestamp int(10) unsigned NOT NULL,primary key(uid,brand_ids))"
		 + " DEFAULT CHARSET=utf8";
		 String checkTable="show tables like \"userbrandtime\"";
		 try {
		 Class.forName("com.mysql.jdbc.Driver");
		 Connection con = (Connection) DriverManager.getConnection(url,
		 user, password);
		 Statement stmt = (Statement) con.createStatement();
		 
		 ResultSet resultSet=stmt.executeQuery(checkTable);
		 if (resultSet.next()) {
			System.out.println("table exist!");
		}else{
                 if(stmt.executeUpdate(createBrandDatabase)==0)
		 System.out.println("create table success!");
		}
	
		 } finally {
		
		 }
 
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_41792162/article/details/88527896