2017-04-25 66 views
0

我是Java新手,我想在.NET中做类似EF的工作。 那么,有没有什么办法可以在每次有人在没有密码或用户名的新PC上运行应用程序时,在MySql本地数据库中自动创建数据库?Java自动创建数据库

我试着这样做

Connection Conn = DriverManager.getConnection 
        ("jdbc:mysql://localhost/?user=root&password=rootpassword"); 
       Statement s=Conn.createStatement(); 
        int Result=s.executeUpdate("CREATE DATABASE databasename"); 
+0

请张贴你到目前为止所做的任何试验。 –

+0

实体框架的等价物是[Java持久性API](http://docs.oracle.com/javaee/7/tutorial/partpersist.htm)或JPA。但是,我不认为它可以自动创建或升级数据库。请参阅http://stackoverflow.com/questions/3942085/create-database-with-jpa。 – VGR

回答

0

您可以检查Database Schema Creation,它是Java Persistence API的一部分,它可以让你使用javax.persistence.schema-generation.*性能运行一套应用启动时SQL文件的能力,以及如果您没有提供应用程序,它会将您的应用程序连接到默认的datasource。但它主要是建议在开发和测试阶段使用

通常情况下,你将不得不创建一个看起来像这样

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
      http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="examplePU" transaction-type="JTA"> 
    <properties> 
     <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> 
     <property name="javax.persistence.schema-generation.create-source" value="script"/> 
     <property name="javax.persistence.schema-generation.drop-source" value="script"/> 
     <property name="javax.persistence.schema-generation.create-script-source" value="sql/create.sql"/> 
     <property name="javax.persistence.schema-generation.drop-script-source" value="sql/drop.sql"/> 
     <property name="javax.persistence.sql-load-script-source" value="sql/load.sql"/> 
    </properties> 
</persistence-unit> 

您可以使用它的更多例子persistence.xml部署描述符像herehere