質問編集履歴

1

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

2021/09/13 02:57

投稿

naty
naty

スコア12

test CHANGED
File without changes
test CHANGED
@@ -29,3 +29,101 @@
29
29
  【DB】SQLite3
30
30
 
31
31
  【言語】C#,VB.NET (.NetFramework4.0)
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+ 【2021/9/13 追記】
42
+
43
+
44
+
45
+ 試しに、トランザクションを組まずに更新処理をするように実装を変更した場合は、
46
+
47
+ SQLiteCommand.CommandTimeOutの値が効いていることがわかりました。
48
+
49
+
50
+
51
+ SQLコマンド自体のタイムアウトとトランザクションのタイムアウトは別なのかもしれません。
52
+
53
+
54
+
55
+ また、transactionScopeを使用する場合には、TransactionOptions.Timeoutでトランザクションに対する
56
+
57
+ タイムオーバー値が設定できるようなのですが、明示的なトランザクションを使用した場合に、
58
+
59
+ 同等のタイムオーバーを設定するプロパティを見つけることができませんでした。
60
+
61
+
62
+
63
+ 明示的なトランザクションの場合は、トランザクションに対してタイムオーバー値を設定できないのでしょうか?
64
+
65
+
66
+
67
+ VBですが、参考までソースを記載します。
68
+
69
+
70
+
71
+ ```VB.NET
72
+
73
+ Using con As SQLiteConnection = New SQLiteConnection()
74
+
75
+
76
+
77
+ con.ConnectionString = "Version=3;xxxx.db;New=True;Compress=True;journal mode = delete;"
78
+
79
+ con.Open()
80
+
81
+
82
+
83
+ Dim sql = "update xxxxx"
84
+
85
+
86
+
87
+ Dim trn As SQLiteTransaction = Nothing
88
+
89
+
90
+
91
+ Using cmd As SQLiteCommand = New SQLiteCommand(sql, con)
92
+
93
+
94
+
95
+ cmd.CommandTimeout = 2
96
+
97
+
98
+
99
+ Try
100
+
101
+ trn = con.BeginTransaction()
102
+
103
+
104
+
105
+ cmd.ExecuteNonQuery()
106
+
107
+
108
+
109
+ trn.Commit()
110
+
111
+
112
+
113
+ Catch ex As SQLiteException
114
+
115
+ trn.Rollback()
116
+
117
+ MsgBox(ex.Message)
118
+
119
+ End Try
120
+
121
+
122
+
123
+ End Using
124
+
125
+
126
+
127
+ End Using
128
+
129
+ ```