小编aga*_*gav的帖子

Java JDBC - 多个预准备语句批量插入

使用JDBC(Oracle)我需要在两个表中的每一个中插入大约一千行.像这样的东西:

"INSERT INTO TABLE_A (A_ID, A_NAME, A_LAST_NAME) VALUES (MY_SEQUENCE.NEXTVAL, ?, ?)";
"INSERT INTO TABLE_B (B_ID, B_DESCRIPTION) VALUES (MY_SEQUENCE.CURRVAL, ?)";
Run Code Online (Sandbox Code Playgroud)

问题是两个表都是通过共同的顺序连接的,因此语句的顺序很重要.

如果我只有一张桌子就很容易了.在那种情况下,我使用了代码:

String insert = "Insert into TABLE_A(A_ID, A_NAME, A_LAST_NAME) values(MY_SEQUENCE.NEXTVAL, ?, ?)";
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(insert);
for(MyObject obj : myCollection) {
    ps.setString(1, obj.getName());
    ps.setString(2, obj.getLastName());
    ps.addBatch();
}
ps.executeBatch();
conn.commit();
ps.close();
Run Code Online (Sandbox Code Playgroud)

但是这种方法只能使用一个准备好的语句,因此只能使用一个插入.我该如何为这个问题提供解决方案?

java jdbc prepared-statement

13
推荐指数
1
解决办法
3万
查看次数

我如何使用akka unbecome有什么问题

有一个scala课程(来自coursera反应课程)

class Counter extends Actor {
   def counter(n: Int): Receive = {
    case "inc" => context.become(counter(n + 1))        
    case "get" => sender ! n
  }

  def receive = counter(0)
}
Run Code Online (Sandbox Code Playgroud)

所有这个actor都是通过inc请求递增计数器并通过get请求返回当前计数器值.我认为context.become会为行为堆栈添加新的行为.所以,如果我添加线

    case "dec" => context.unbecome()
Run Code Online (Sandbox Code Playgroud)

它将从堆栈中恢复先前的行为,并且进一步获取请求将返回先前的值.但如果我跑

counter ! "inc"
counter ! "inc"
counter ! "inc"
counter ! "inc"

counter ! "dec"
counter ! "get"
Run Code Online (Sandbox Code Playgroud)

返回的结果是0但不是我预期的3.有谁可以形容为什么?

scala akka

2
推荐指数
1
解决办法
206
查看次数

标签 统计

akka ×1

java ×1

jdbc ×1

prepared-statement ×1

scala ×1