2016-12-10 11 views
0

Я использую AsyncSQLClient, чтобы получить асинхронный. подключение к моей базе данных в vertx. Теперь я боюсь, как использовать JOOQs DSL. Я стараюсь:JOOQ DSL using SqlConnection

client.getConnection(res -> { 
    if (res.succeeded()) { 
      SQLConnection connection = res.result(); 

      DSL dsl = DSL.using(connection, SQLDialect.POSTGRES_9_4); 

      connection.close(); 
      client.close(); 
    } else { 
    } 
}); 

Это не работает, потому что использование требует подключения, а не SQLConnection. Есть ли способ использовать SQLConnection с JOOQ? Есть ли другой способ создать асинхронное соединение для JOOQ?

ответ

1

Вы могли бы реализовать (и с открытым исходным кодом!) В «прокси» для vert.x SQLConnection типа. Например, если вы хотите запустить следующий vert.x метод:

interface SQLConnection { 
    SQLConnection queryWithParams(
     String sql, 
     JsonArray params, 
     Handler<AsyncResult<ResultSet>> resultHandler 
    ); 
} 

Ваш прокси подвергнет метод, как это вместо:

class jOOQSQLConnection { 
    final SQLConnection delegate; 
    <R extends Record> jOOQSQLConnection query(
     ResultQuery<R> sql, 
     Handler<AsyncResult<Result<R>>> resultHandler 
    ) { 
     wrapInjOOQSQLConnection(

      // Extract the SQL string from the jOOQ query 
      delegate.query(sql.getSQL()), 

      // Extract the bind variables from the jOOQ query and wrap them in the 
      // JsonArray type, as requested by vert.x 
      wrapjOOQParamsInJsonArray(sql.getBindValues()), 

      // This is a handler that receives a vert.x ResultSet and wraps/transforms 
      // it into a jOOQ result (which contains the <R> type for type safety) 
      r -> resultHandler.handle(wrapInjOOQResult(r.result())) 
     ); 
    } 
} 

выше, вероятно, не будет работать из коробки , но это дает вам представление о том, как обернуть вещи.

+0

К сожалению, мои знания о структуре не так хороши, чтобы писать библиотеку. Спасибо, что направили меня в правильном направлении! – perotom

+0

@perotom: ОК, не беспокойтесь. Может быть, кто-то другой, кто найдет этот вопрос в будущем, может это сделать :) –

0
using (SqlConnection con = connection.getconnection()){ 

        SqlCommand cmd = new SqlCommand("empreg", con); 
        cmd.CommandType = CommandType.StoredProcedure; 
        cmd.Parameters.AddWithValue("@empid", txtempid.Text); 
        cmd.Parameters.AddWithValue("@empname", txtempname.Text); 
        cmd.Parameters.AddWithValue("@salary", txtsalary.Text); 
        cmd.Parameters.AddWithValue("@tell", txttell.Text); 
        cmd.Parameters.AddWithValue("@address", txtaddress.Text); 
        cmd.Parameters.AddWithValue("@blog", txtblog.Text); 
        cmd.Parameters.AddWithValue("@gender", cmbgender.Text); 
        cmd.Parameters.AddWithValue("@hiredate", dtpdate.Value); 
        cmd.Parameters.AddWithValue("@op", op); 
        int i = cmd.ExecuteNonQuery(); 

        //If i > 0 AND op = "insert" 
        if (i > 0 && op == "insert"){ 

         MessageBox.Show("1 row is saved sucessfuly "); 
         submode.readdgv("emp", DGV2); 
         submode.autoid(txtempid, "emp"); 

         txtempname.Clear(); 
         txtsalary.Clear(); 
         txttell.Clear(); 
         txtaddress.Clear(); 
         txtblog.Clear(); 
         cmbgender.SelectedIndex = -1; 
         dtpdate.Value = DateTime.Now; 
         txtempname.Focus(); 

        } 

        else if (i >= 0 && op == "update"){ 

         MessageBox.Show("1 row is updated sucessfuly "); 
         submode.readdgv("emp", DGV2); 
         submode.autoid(txtempid, "emp"); 

        } 

        else if (i >= 0 && op == "delete"){ 

         MessageBox.Show("1 row is deleted sucessfuly"); 
         submode.readdgv("emp", DGV2); 
         submode.autoid(txtempid, "emp"); 

        } 
        else{ 

         MessageBox.Show("process is failed"); 
         submode.readdgv("emp", DGV2); 
         submode.autoid(txtempid, "emp"); 

        } 

       } 

 Смежные вопросы

  • Нет связанных вопросов^_^