如何在java中运行sql脚本[关闭]

Posted

技术标签:

【中文标题】如何在java中运行sql脚本[关闭]【英文标题】:How to run sql script in java [closed] 【发布时间】:2016-12-01 09:23:39 【问题描述】:

您好,在 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 部分是我目前正在努力解决的领域。

【问题讨论】:

你遇到了什么错误? 目前这在 scriptRunner 行,但我确实更改了我复制的原始代码以匹配我的。错误:(47, 88) java: ';'预计我添加了 conn、connectionString、connectionProps 为什么ScriptRunner runner... 行末尾没有; 为什么return语句后有代码,return会在getConnection函数内部结束执行,所以return后的代码永远不会执行 @Meshredded 有道理,这是一个好的开始。我必须指出,我对 java 还是很陌生,所以这都是一个学习曲线,所以如果它看起来很业余,我很抱歉,这可能是因为这就是我问专家的原因。 【参考方案1】:

这是一个连接到 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;
    


此示例确保您将只有一个数据库连接实例,如果您不理解这一点,请忽略它。

【讨论】:

为了从您的表中检索数据,您可以查看以下示例:github.com/Meshredded/Java8_Planning_Manager/blob/master/… 谢谢你,它看起来确实干净了很多,但我认为这一点被忽略了。虽然您已经改进了数据库连接。我未能解释我的项目中有一个文件 String file = "resources/cleanDatabaseScript.sql";我需要做的就是在数据库连接后运行脚本。我的错,我没有在原帖中正确解释。 如果你有一个文件,它必须是一个 sqlite 数据库,所以你需要另一个驱动程序 这是使用 sqlite 的方法bitbucket.org/xerial/sqlite-jdbc

以上是关于如何在java中运行sql脚本[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Delphi 中执行包含许多 GO 语句的大型 SQL 脚本? [关闭]

如何在另一个脚本中运行 Python 脚本并立即关闭自身

如何以编程方式在 RedShift sql 脚本文件上运行

如何从java执行sql文件

如何在 SQL Server 2000 中为所有单笔表格生成脚本? [关闭]

如何运行 sql 脚本以从 java 代码更新 Derby 模式?