11using System ;
2- using System . Data ;
3- using System . Data . SQLite ;
42using System . Text . RegularExpressions ;
3+ using Microsoft . Data . Sqlite ;
54using UnityDataTools . Analyzer . SerializedObjects ;
65using UnityDataTools . FileSystem . TypeTreeReaders ;
76
87namespace UnityDataTools . Analyzer . SQLite . Handlers ;
98
109public class AssetBundleHandler : ISQLiteHandler
1110{
12- SQLiteCommand m_InsertCommand ;
13- private SQLiteCommand m_InsertDepCommand ;
11+ SqliteCommand m_InsertCommand ;
12+ private SqliteCommand m_InsertDepCommand ;
1413 private Regex m_SceneNameRegex = new Regex ( @"([^//]+)\.unity" ) ;
1514
16- public void Init ( SQLiteConnection db )
15+ public void Init ( SqliteConnection db )
1716 {
18- using var command = new SQLiteCommand ( db ) ;
19-
17+ using var command = db . CreateCommand ( ) ;
2018 command . CommandText = Properties . Resources . AssetBundle ;
2119 command . ExecuteNonQuery ( ) ;
2220
23- m_InsertCommand = new SQLiteCommand ( db ) ;
21+ m_InsertCommand = db . CreateCommand ( ) ;
22+
2423 m_InsertCommand . CommandText = "INSERT INTO assets(object, name) VALUES(@object, @name)" ;
25- m_InsertCommand . Parameters . Add ( "@object" , DbType . Int64 ) ;
26- m_InsertCommand . Parameters . Add ( "@name" , DbType . String ) ;
24+ m_InsertCommand . Parameters . Add ( "@object" , SqliteType . Integer ) ;
25+ m_InsertCommand . Parameters . Add ( "@name" , SqliteType . Text ) ;
26+
27+ m_InsertDepCommand = db . CreateCommand ( ) ;
2728
28- m_InsertDepCommand = new SQLiteCommand ( db ) ;
2929 m_InsertDepCommand . CommandText = "INSERT INTO asset_dependencies(object, dependency) VALUES(@object, @dependency)" ;
30- m_InsertDepCommand . Parameters . Add ( "@object" , DbType . Int64 ) ;
31- m_InsertDepCommand . Parameters . Add ( "@dependency" , DbType . Int64 ) ;
30+ m_InsertDepCommand . Parameters . Add ( "@object" , SqliteType . Integer ) ;
31+ m_InsertDepCommand . Parameters . Add ( "@dependency" , SqliteType . Integer ) ;
3232 }
3333
3434 public void Process ( Context ctx , long objectId , RandomAccessReader reader , out string name , out long streamDataSize )
@@ -41,7 +41,7 @@ public void Process(Context ctx, long objectId, RandomAccessReader reader, out s
4141 {
4242 var fileId = ctx . LocalToDbFileId [ asset . PPtr . FileId ] ;
4343 var objId = ctx . ObjectIdProvider . GetId ( ( fileId , asset . PPtr . PathId ) ) ;
44-
44+ m_InsertCommand . Transaction = ctx . Transaction ;
4545 m_InsertCommand . Parameters [ "@object" ] . Value = objId ;
4646 m_InsertCommand . Parameters [ "@name" ] . Value = asset . Name ;
4747 m_InsertCommand . ExecuteNonQuery ( ) ;
@@ -51,7 +51,7 @@ public void Process(Context ctx, long objectId, RandomAccessReader reader, out s
5151 var dependency = assetBundle . PreloadTable [ i ] ;
5252 var depFileId = ctx . LocalToDbFileId [ dependency . FileId ] ;
5353 var depId = ctx . ObjectIdProvider . GetId ( ( depFileId , dependency . PathId ) ) ;
54-
54+ m_InsertDepCommand . Transaction = ctx . Transaction ;
5555 m_InsertDepCommand . Parameters [ "@object" ] . Value = objId ;
5656 m_InsertDepCommand . Parameters [ "@dependency" ] . Value = depId ;
5757 m_InsertDepCommand . ExecuteNonQuery ( ) ;
@@ -65,7 +65,7 @@ public void Process(Context ctx, long objectId, RandomAccessReader reader, out s
6565 {
6666 var sceneName = match . Groups [ 1 ] . Value ;
6767 var objId = ctx . ObjectIdProvider . GetId ( ( ctx . SerializedFileIdProvider . GetId ( sceneName ) , 0 ) ) ;
68-
68+ m_InsertCommand . Transaction = ctx . Transaction ;
6969 m_InsertCommand . Parameters [ "@object" ] . Value = objId ;
7070 m_InsertCommand . Parameters [ "@name" ] . Value = asset . Name ;
7171 m_InsertCommand . ExecuteNonQuery ( ) ;
@@ -77,10 +77,10 @@ public void Process(Context ctx, long objectId, RandomAccessReader reader, out s
7777 streamDataSize = 0 ;
7878 }
7979
80- public void Finalize ( SQLiteConnection db )
80+ public void Finalize ( SqliteConnection db )
8181 {
82- using var command = new SQLiteCommand ( db ) ;
83-
82+ using var command = new SqliteCommand ( ) ;
83+ command . Connection = db ;
8484 command . CommandText = "CREATE INDEX asset_dependencies_object ON asset_dependencies(object)" ;
8585 command . ExecuteNonQuery ( ) ;
8686
@@ -90,7 +90,7 @@ public void Finalize(SQLiteConnection db)
9090
9191 void IDisposable . Dispose ( )
9292 {
93- m_InsertCommand . Dispose ( ) ;
94- m_InsertDepCommand . Dispose ( ) ;
93+ m_InsertCommand ? . Dispose ( ) ;
94+ m_InsertDepCommand ? . Dispose ( ) ;
9595 }
9696}
0 commit comments