簡體   English   中英

Apache Camel JDBC插入

[英]Apache Camel JDBC Insert

我正在研究Apache Camel,想將數據插入數據庫。 我的數據庫是SqlServer。 Apache Camel版本為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();
        }

我沒有任何錯誤,也沒有在表中插入數據。 我還嘗試了“ SELECT”查詢,該查詢也不起作用。

我嘗試了Logger,它在日志中給我很多錯誤沒有找到defn類的twitter等,我根本沒有使用它,我認為我的錯誤與此無關。

任何幫助。

您需要觸發駱駝路線。 您使用from("direct:myTable")並沒有做任何開箱即用的事情。 您需要將消息發送到此端點,或者將其更改為計時器或觸發新消息的內容。

要發送消息,請使用ProducerTemplate ,您可以在此處找到相關信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM