2016-12-01 127 views
-3

嗨在Java中运行sql脚本的最佳方式是什么?我有我的连接到数据库,并拿起一些代码,我认为可能会运行该脚本目前得到一些错误。如何在java中运行sql脚本

public class DatabaseConnection { 

private String userName = ""; 
private String password = ""; 
private String serverName = ""; 
private String portNumber = ""; 




public Connection getConnection() throws SQLException { 

    Connection conn = null; 

    Properties connectionProps = new Properties(); 
    connectionProps.put("user", this.userName); 
    connectionProps.put("password", this.password); 
    String connectionString = "jdbc:mysql://" + 
      this.serverName + 
      ":" + this.portNumber; 

    System.out.println("Connection String: " + connectionString); 

    conn = DriverManager.getConnection(connectionString, connectionProps); 

    System.out.println("Connected to database"); 
    return conn; 


    **ScriptRunner runner = new ScriptRunner(conn, connectionString, connectionProps) 
    String file = "resources/cleanDatabaseScript.sql"; 
    System.out.println("retreived script"); 
    runner.runScript(new BufferedReader(new FileReader(file)));** 


} 

ScriptRunner部分是im正在努力与当前的区域。

+0

你得到了什么错误? – Janar

+0

目前这在scriptRunner行,但我确实改变了我复制的原始代码以匹配我的。 错误:(47,88)java:';'预计 我添加了conn,connectionString,connectionProps – Peter

+0

为什么在'ScriptRunner runner ...'行最后没有';'? –

回答

2

这是一个基本类连接到MySQL:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class DbConnection { 

    private static Connection singleConnection ; 
    private static Statement singleStatement; 


    public static synchronized Statement getStatement() throws SQLException{ 

     if (singleConnection == null){ 
      singleConnection = DriverManager.getConnection("jdbc:mysql://HereTheHost:HereThePortNumber/HereTheDataBaseName","HereTheUserName","HereThePassWord"); 
      if (singleStatement == null){ 
       singleStatement = singleConnection.createStatement(); 
       System.out.println("Connection Success !"); 
      } 
     } 
     return singleStatement; 
    } 

} 

这个例子可以确保你将有只有一个数据库连接的情况下,如果你不明白这只是忽略它。

+0

,并且为了从您的表格中检索数据,您可以看到以下示例:https://github.com/Meshredded/Java8_Planning_Manager/blob/master/sources/src/memoryDatabaseExchange/CoursLoader.java – Meshredded

+0

感谢您的评价很多更清洁,但我认为这一点已被错过。虽然你已经改善了数据库连接。我没有解释我在我的项目中有一个文件 String file =“resources/cleanDatabaseScript.sql”; 我需要做的就是在数据库连接后运行脚本。我在原帖中没有正确解释我的错。 – Peter

+0

如果你有一个文件比它必须是一个sqlite数据库,所以你需要另一个驱动程序 – Meshredded