如何使用JDBC执行过程

时间:2017-02-02 08:48:07

标签: java sql oracle jdbc

这是我的功能:

public static void execute_delete_on_db(String pass, String login, String port,
        String host, String table_name, String file_path) throws Exception {

    Class.forName("oracle.jdbc.OracleDriver");
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//"
            + host + ":" + port + "/xe", login, pass);

    PreparedStatement statement = null;

    Statement stmt = null;
    String query = "delete from AA_ALL";
    stmt = conn.createStatement();
    stmt.executeQuery(query);
    sql_statement.close();
    conn.commit();
    conn.close();
}

至少这是我职能中最重要的部分。以上代码工作正常。我试着通过调用这个sql语句来执行我的过程:

  EXECUTE delete_all_rows_from_table('all');

在Java中它看起来像这样:

String query = "EXECUTE delete_all_rows_from_table('all')";

在数据库上它工作正常,但在Java中这给了我错误。 你能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:7)

你可以call你的程序而不是这样执行:

String query = "{call delete_all_rows_from_table(?)}"; 
CallableStatement statement = connection.prepareCall(query);  
statement.setString(1, "all");  
statement.execute(); 

您可以在此处了解详情:JDBC CallableStatement – Stored Procedure OUT parameter exampleJDBC Stored Procedure

答案 1 :(得分:2)

请注意,如果过程中有一些参数,则必须注册这些参数。

这是一个示例,假设我们已经导入了模块(java.sql.CallableStatement和java.sql.Types)并且已建立连接。

chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
try:
    browser = webdriver.Chrome(options=chrome_options)
except SessionNotCreatedException:
    os.environ['WDM_LOG_LEVEL'] = '0'
    browser = webdriver.Chrome(ChromeDriverManager().install(), options=chrome
browser.get('http://google.com')