Java ApacheCamel JDBC插入

Java ApacheCamel JDBC插入,java,apache-camel,esb,Java,Apache Camel,Esb,我正在使用ApacheCamel并希望将数据插入数据库。 我的数据库是SqlServer。 ApacheCamel版本是2.14.1 这就是我一直尝试的 import javax.sql.DataSource; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import or

我正在使用ApacheCamel并希望将数据插入数据库。 我的数据库是SqlServer。 ApacheCamel版本是2.14.1

这就是我一直尝试的

import javax.sql.DataSource;

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.apache.commons.dbcp.BasicDataSource;

public class file2DB {

    public static void main(String[] args) throws Exception {
        final String url = "jdbc:sqlserver://localhost:1433;databaseName=TestDB";

        DataSource datasource = setupDataSource(url);
        SimpleRegistry simpleregistry = new SimpleRegistry();
        simpleregistry.put("DataSource", datasource);
        CamelContext context = new DefaultCamelContext(simpleregistry);
        context.addRoutes(new file2DB().new MyRouteBuilder());

        context.start();
        Thread.sleep(20000);
        context.stop();
    }

    class MyRouteBuilder extends RouteBuilder {
        @Override
        public void configure() throws Exception {
            try {

                from("direct:myTable")
                .setBody(constant("INSERT INTO employee1(empId,payrollId) VALUES('1234','4567')")) 
                .to("jdbc:DataSource");

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }
    private static DataSource setupDataSource(String url){
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        basicDataSource.setUsername("sa");
        basicDataSource.setPassword("*****");
        basicDataSource.setUrl(url);
        return basicDataSource;
    }

}
我使用下面的代码检查了数据源连接,我得到了结果,所以连接似乎没有问题

        Connection con=null;
        try {
            con = basicDataSource.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from employee1");

            while (rs.next()) {
                System.out.println(rs.getString(2));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
我并没有得到任何错误,也并没有在表中插入数据。 我还尝试了同样不起作用的“选择”查询

我尝试了Logger,它在日志中给了我很多错误,没有类defn发现twitter等,我根本没有使用它,我认为我的错误与此无关


任何帮助

您需要触发骆驼路线。您可以使用来自(“direct:myTable”)的
,而这并不会做任何开箱即用的事情。您需要将消息发送到此端点,或者将其更改为计时器或触发新消息的内容

要发送消息,请使用
ProducerTemplate
,您可以在此处找到相关信息


您需要触发骆驼路线。您可以使用来自(“direct:myTable”)的
,而这并不会做任何开箱即用的事情。您需要将消息发送到此端点,或者将其更改为计时器或触发新消息的内容

要发送消息,请使用
ProducerTemplate
,您可以在此处找到相关信息


当发生异常时,服务器终端上应该会出现一些错误/异常-当相关数据库中没有插入或检索到某些内容时。当您尝试插入数据库或从数据库中检索时,您在服务器日志(堆栈跟踪)中没有得到任何信息吗?如果在服务器端出现错误,那么我认为我尝试测试datasource的是一个基本的select查询,应该也失败了吧?我也尝试了MySQL,同样的问题仍然存在。我在camel api中缺少了一些东西。当异常发生时,服务器终端上应该有一些错误/异常-当相关数据库中没有插入或检索到某些东西时。当您尝试插入数据库或从数据库中检索时,您在服务器日志(堆栈跟踪)中没有得到任何信息吗?如果在服务器端出现错误,那么我认为我尝试测试datasource的是一个基本的select查询,应该也失败了吧?我也尝试了MySQL,同样的问题仍然存在。我在骆驼api中遗漏了一些东西。