在drools business center中我已经添加了一个数据库,drools中的function可以定义一个从添加的数据库获取数据的方法吗,请写一个例子
时间: 2024-03-09 07:51:12 浏览: 66
是的,您可以定义一个从添加的数据库中获取数据的方法。下面是一个示例函数,它从名为`my_db`的数据库中获取一个名为`employee`的表中的所有员工的姓名和工资信息:
```java
import java.sql.*;
public class MyFunctions {
public static String getEmployeeInfo() {
String result = "";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db", "root", "password");
stmt = conn.createStatement();
String sql = "SELECT name, salary FROM employee";
rs = stmt.executeQuery(sql);
while (rs.next()) {
String name = rs.getString("name");
int salary = rs.getInt("salary");
result += name + " earns " + salary + " dollars per month.\n";
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
```
在Drools中,您可以将该函数作为规则中的一个函数使用。例如,您可以编写一个规则,该规则在某个条件下触发并调用该函数,将返回的员工信息打印到控制台上:
```java
rule "Get employee info"
when
// 触发条件
then
String employeeInfo = MyFunctions.getEmployeeInfo();
System.out.println(employeeInfo);
end
```
请注意,这个例子是基于MySQL数据库的,如果您使用其他类型的数据库,您需要根据您的数据库类型和配置进行适当的更改。
阅读全文