简体   繁体   中英

Creating a database and tables in MySQL using a JDBC application

I've created a program in Java for a school project. I created the database and tables using MySQL Workbench, but now I need my program to work on other computers and therefore I need it to check if the database and tables exist, and if not create them on its own.

This is the relevant code in my driver class as it stands:

private static Connection conn;

static
{
    try
    {
        Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException exc)
    {
        javax.swing.JOptionPane.showMessageDialog(null, "Oops! Something seems to have gone wrong!\n\n" + exc, "Error", JOptionPane.ERROR_MESSAGE);
    }
}

public static Connection getMySQLConnection() throws SQLException
{
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/tournament_manager", "studentCouncil", "****");
    return conn;
}

As above, the database I would like to create, if it does not exist, is to be called "tournament_manager". The tables to be created with the database are as follows:

Table 1 Name: password

Column 1: passwordID Type: int(11) Nullable: NO

Column 2: password Type: varchar(20) Nullable: YES Character Set: latin1

Table 2 Name: tournaments

Column 1: tournamentID Type: int(11) Nullable: NO Extra: auto_increment

Column 2: tournamentName Type: varchar(20) Nullable: NO Character Set: latin1

Column 3: date Type: date Nullable: NO

Column 4: startTime Type: int(11) Nullable: NO

Column 5: matchDuration Type: int(11) Nullable: NO

Column 6: breakDuration Type: int(11) Nullable: NO

Column 7: numTeams Type: int(11) Nullable: NO

Column 8: numVenues Type: int(11) Nullable: NO

Table 3 Name: teams

Column 1: teamID Type: int(11) Nullable: NO Extra: auto_increment

Column 2: teamName Type: varchar(20) Nullable: NO Character Set: latin1

Column 3: points Type: int(11) Nullable: NO

Column 4: tournaments_tournamentID Type: int(11) Nullable: NO

I am new to stack overflow, so I may have not included all the relevant information or included irrelevant information. In the case that I haven't included relevant details, please ask.

Thank you in advance for the support!

To create tables, you should use the "CREATE TABLE" SQL syntax. This can be done on the database management program but also in JDBC.

  stmt = conn.createStatement();

  String sql = "CREATE TABLE password" +
               "(passwordId INTEGER not NULL, " +
               " password VARCHAR(20), " + 
               " PRIMARY KEY ( passwordId ))"; 

  stmt.executeUpdate(sql);

Actually you can do it with Hibernate JPA.

Create a Model

@Entity
@Table(name = "USER")
public class User{

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id
  @Column(name="FIRST_NAME")
  private String firstName
  @Column(name="LAST_NAME")
  private String lastName
}

Define hibernate auto creation

in applicationContext.xml (spring-servlet.xml or hibernate.cfg.xml) add that:

         <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/DB"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value=""/>
            // That property create tables and key options.
            <property name="hbm2ddl.auto" value="create"/>
        </properties>

Start Server

When you start server hibernate will create your tables or update your columns.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM