teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

追加の情報のソースコード

2021/09/13 02:57

投稿

naty
naty

スコア12

title CHANGED
File without changes
body CHANGED
@@ -13,4 +13,53 @@
13
13
  もしご存知の方がいらっしゃればご教示いただけると幸いです。
14
14
 
15
15
  【DB】SQLite3
16
- 【言語】C#,VB.NET (.NetFramework4.0)
16
+ 【言語】C#,VB.NET (.NetFramework4.0)
17
+
18
+
19
+
20
+
21
+ 【2021/9/13 追記】
22
+
23
+ 試しに、トランザクションを組まずに更新処理をするように実装を変更した場合は、
24
+ SQLiteCommand.CommandTimeOutの値が効いていることがわかりました。
25
+
26
+ SQLコマンド自体のタイムアウトとトランザクションのタイムアウトは別なのかもしれません。
27
+
28
+ また、transactionScopeを使用する場合には、TransactionOptions.Timeoutでトランザクションに対する
29
+ タイムオーバー値が設定できるようなのですが、明示的なトランザクションを使用した場合に、
30
+ 同等のタイムオーバーを設定するプロパティを見つけることができませんでした。
31
+
32
+ 明示的なトランザクションの場合は、トランザクションに対してタイムオーバー値を設定できないのでしょうか?
33
+
34
+ VBですが、参考までソースを記載します。
35
+
36
+ ```VB.NET
37
+ Using con As SQLiteConnection = New SQLiteConnection()
38
+
39
+ con.ConnectionString = "Version=3;xxxx.db;New=True;Compress=True;journal mode = delete;"
40
+ con.Open()
41
+
42
+ Dim sql = "update xxxxx"
43
+
44
+ Dim trn As SQLiteTransaction = Nothing
45
+
46
+ Using cmd As SQLiteCommand = New SQLiteCommand(sql, con)
47
+
48
+ cmd.CommandTimeout = 2
49
+
50
+ Try
51
+ trn = con.BeginTransaction()
52
+
53
+ cmd.ExecuteNonQuery()
54
+
55
+ trn.Commit()
56
+
57
+ Catch ex As SQLiteException
58
+ trn.Rollback()
59
+ MsgBox(ex.Message)
60
+ End Try
61
+
62
+ End Using
63
+
64
+ End Using
65
+ ```