我想弄清楚如何使用Java在MariaDB中編寫存儲過程。有一個補丁圍繞着說明它是可能的。我不確定這是否成爲標準。MariaDB:啓用Java存儲過程
如果您有任何人已經使用Java成功編寫MariaDB/MySQL的存儲過程,請告訴我。
我想弄清楚如何使用Java在MariaDB中編寫存儲過程。有一個補丁圍繞着說明它是可能的。我不確定這是否成爲標準。MariaDB:啓用Java存儲過程
如果您有任何人已經使用Java成功編寫MariaDB/MySQL的存儲過程,請告訴我。
我承擔問題是關於使用Java作爲存儲過程的語言而不是SQL。這是不可能的。是的,Antony Curtis做了一些工作,這將使這種存儲過程成爲可能。唉,它不是MySQL/MariaDB或任何發行版的一部分。因此,至少現在,您將無法使用它。
Link to Antony's presentation about using external languages with MySQL
Hej Martin,
我在一個月前做過這個。我使用JDBC連接到MySQL數據庫,但MariaDB是Drop-in替代品,所以我認爲它也適用於MariaDB實例。
這是我的工作示例代碼:
JDBCConnection類
package de.professional_webworkx.blog.sp.connector;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Driver;
public class JDBCConnector {
public static JDBCConnector INSTANCE;
/*
* We need some connection information
* CHANGE THEM!
*/
private static final String USER = "USER";
private static final String PASS = "PASS";
private static final String HOST = "localhost";
private static final String DB = "DATABASE";
private static final int PORT = 3306;
private static final String URL = "jdbc:mysql://"+HOST+":"+PORT+"/"+DB;
private Connection connection;
private java.sql.PreparedStatement statement;
private JDBCConnector() {
connect();
}
private void connect() {
try {
Driver driver = (Driver)Class.forName("com.mysql.jdbc.Driver").newInstance();
DriverManager.registerDriver(driver);
connection = DriverManager.getConnection(URL, USER, PASS);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void closeConnection() {
if(connection != null) {
try {
connection.close();
} catch (SQLException e) {
System.err.println("Something went wrong while closing the connection");
}
}
}
public void getCustomerCount() {
try {
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT COUNT(*) FROM customer;");
while(rs != null && rs.next()){
System.out.println(rs.getInt(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void addStoredProcedure() {
try {
String sql = "create procedure myProc() "
+ "BEGIN "
+ "SELECT COUNT(*) as total FROM customer;"
+ "END";
statement = connection.prepareStatement(sql);
statement.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static JDBCConnector getInstance() {
if(INSTANCE == null) {
INSTANCE = new JDBCConnector();
}
return INSTANCE;
}
}
並啓動它:
package de.professional_webworkx.blog.sp;
import de.professional_webworkx.blog.sp.connector.JDBCConnector;
public class App
{
public static void main(String[] args)
{
JDBCConnector connector = JDBCConnector.getInstance();
// create the Stored Procedure in your DB
connector.addStoredProcedure();
}
}
我也把這個例子的代碼GitHub
感謝您的回答。你所做的是使用Java連接到MariaDB。我正在尋找的是使用java語言而不是古怪的SQL編寫存儲過程。正如弗拉迪斯拉夫所言,現在它不可能實現。 –
那就是我也讀過的。我希望他們能夠把這個分配到這個分配中。丟人現眼... 。 –