mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[RombaSharp] Romba db fixes
This commit is contained in:
@@ -230,6 +230,7 @@ namespace SabreTools
|
||||
private static void DisplayDBStats()
|
||||
{
|
||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||
dbc.Open();
|
||||
|
||||
// Total uncompressed size
|
||||
string query = "SELECT SUM(size) FROM data";
|
||||
@@ -242,12 +243,12 @@ namespace SabreTools
|
||||
_logger.User("Total files: " + (long)slc.ExecuteScalar());
|
||||
|
||||
// Total number of files that exist
|
||||
query = "SELECT COUNT(*) FROM data WHERE exists=1";
|
||||
query = "SELECT COUNT(*) FROM data WHERE indepot=1";
|
||||
slc = new SqliteCommand(query, dbc);
|
||||
_logger.User("Total files in depots: " + (long)slc.ExecuteScalar());
|
||||
|
||||
// Total number of files that are missing
|
||||
query = "SELECT COUNT(*) FROM data WHERE exists=0";
|
||||
query = "SELECT COUNT(*) FROM data WHERE indepot=0";
|
||||
slc = new SqliteCommand(query, dbc);
|
||||
_logger.User("Total files missing: " + (long)slc.ExecuteScalar());
|
||||
|
||||
@@ -313,7 +314,7 @@ namespace SabreTools
|
||||
/// <summary>
|
||||
/// Populate or refresh the database information
|
||||
/// </summary>
|
||||
/// <remarks>Each hash has the following attributes: size, crc, md5, sha-1, dathash, existss</remarks>
|
||||
/// <remarks>Each hash has the following attributes: size, crc, md5, sha-1, dathash, indepot</remarks>
|
||||
private static void RefreshDatabase()
|
||||
{
|
||||
// Make sure the db is set
|
||||
@@ -344,9 +345,11 @@ namespace SabreTools
|
||||
// Create a List of dat hashes in the database (SHA-1)
|
||||
List<string> databaseDats = new List<string>();
|
||||
|
||||
// Populate the List from the database
|
||||
string query = "SELECT UNIQUE hash FROM dats";
|
||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||
dbc.Open();
|
||||
|
||||
// Populate the List from the database
|
||||
string query = "SELECT hash FROM dats";
|
||||
SqliteCommand slc = new SqliteCommand(query, dbc);
|
||||
SqliteDataReader sldr = slc.ExecuteReader();
|
||||
if (sldr.HasRows)
|
||||
@@ -399,9 +402,9 @@ namespace SabreTools
|
||||
foreach (Rom rom in tempdat.Files[romkey])
|
||||
{
|
||||
query = "SELECT id FROM data WHERE size=" + rom.Size + " AND ("
|
||||
+ "(crc=\"" + rom.CRC + "\" OR value=\"null\")"
|
||||
+ " AND (md5=\"" + rom.MD5 + "\" OR value=\"null\")"
|
||||
+ " AND (sha1=\"" + rom.SHA1 + "\" OR value=\"null\"))";
|
||||
+ "(crc=\"" + rom.CRC + "\" OR crc=\"null\")"
|
||||
+ " AND (md5=\"" + rom.MD5 + "\" OR md5=\"null\")"
|
||||
+ " AND (sha1=\"" + rom.SHA1 + "\" OR sha1=\"null\"))";
|
||||
slc = new SqliteCommand(query, dbc);
|
||||
sldr = slc.ExecuteReader();
|
||||
|
||||
@@ -409,7 +412,7 @@ namespace SabreTools
|
||||
if (sldr.HasRows)
|
||||
{
|
||||
sldr.Read();
|
||||
string id = sldr.GetString(0);
|
||||
long id = sldr.GetInt64(0);
|
||||
|
||||
string squery = "SELECT * FROM dats WHERE id=" + id;
|
||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||
@@ -430,18 +433,18 @@ namespace SabreTools
|
||||
// If it doesn't exist, add the hash and the dat hash for a new id
|
||||
else
|
||||
{
|
||||
string squery = "INSERT INTO data (size, crc, md5, sha1, exists) VALUES"
|
||||
+ " size=" + rom.Size + ","
|
||||
+ " crc=\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
||||
+ " md5=\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
||||
+ " sha1=\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
||||
+ " exists=0)";
|
||||
string squery = "INSERT INTO data (size, crc, md5, sha1, indepot) VALUES ("
|
||||
+ rom.Size + ","
|
||||
+ "\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
||||
+ "\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
||||
+ "\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
||||
+ "0)";
|
||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||
sslc.ExecuteNonQuery();
|
||||
|
||||
long id = -1;
|
||||
|
||||
squery = "SELECT last_insertConstants.Rowid()";
|
||||
squery = @"select last_insert_rowid()";
|
||||
sslc = new SqliteCommand(squery, dbc);
|
||||
id = (long)sslc.ExecuteScalar();
|
||||
|
||||
|
||||
@@ -38,8 +38,10 @@ namespace SabreTools
|
||||
DatFile need = new DatFile();
|
||||
need.Files = new SortedDictionary<string, List<DatItem>>();
|
||||
|
||||
// Now that we have the Dats, add the files to the database
|
||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||
dbc.Open();
|
||||
|
||||
// Now that we have the Dats, add the files to the database
|
||||
foreach (string key in df.Files.Keys)
|
||||
{
|
||||
List<DatItem> datItems = df.Files[key];
|
||||
@@ -49,7 +51,7 @@ namespace SabreTools
|
||||
+ "(crc=\"" + rom.CRC + "\" OR value=\"null\")"
|
||||
+ " AND (md5=\"" + rom.MD5 + "\" OR value=\"null\")"
|
||||
+ " AND (sha1=\"" + rom.SHA1 + "\" OR value=\"null\")"
|
||||
+ " AND exists=0";
|
||||
+ " AND indepot=0";
|
||||
SqliteCommand slc = new SqliteCommand(query, dbc);
|
||||
SqliteDataReader sldr = slc.ExecuteReader();
|
||||
|
||||
@@ -57,9 +59,9 @@ namespace SabreTools
|
||||
if (sldr.HasRows)
|
||||
{
|
||||
sldr.Read();
|
||||
string id = sldr.GetString(0);
|
||||
long id = sldr.GetInt64(0);
|
||||
|
||||
string squery = "UPDATE data SET exists=1 WHERE id=" + id;
|
||||
string squery = "UPDATE data SET indepot=1 WHERE id=" + id;
|
||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||
sslc.ExecuteNonQuery();
|
||||
sslc.Dispose();
|
||||
@@ -80,12 +82,12 @@ namespace SabreTools
|
||||
// If it doesn't exist, and we're not adding only needed files
|
||||
else if (!onlyNeeded)
|
||||
{
|
||||
string squery = "INSERT INTO data (size, crc, md5, sha1, exists) VALUES"
|
||||
+ " size=" + rom.Size + ","
|
||||
+ " crc=\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
||||
+ " md5=\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
||||
+ " sha1=\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
||||
+ " exists=1)";
|
||||
string squery = "INSERT INTO data (size, crc, md5, sha1, indepot) VALUES ("
|
||||
+ rom.Size + ","
|
||||
+ "\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
||||
+ "\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
||||
+ "\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
||||
+ "1)";
|
||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||
sslc.ExecuteNonQuery();
|
||||
sslc.Dispose();
|
||||
@@ -221,8 +223,10 @@ namespace SabreTools
|
||||
}
|
||||
}
|
||||
|
||||
// Now, search for each of them and return true or false for each
|
||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||
dbc.Open();
|
||||
|
||||
// Now, search for each of them and return true or false for each
|
||||
foreach (string input in crc)
|
||||
{
|
||||
string query = "SELECT * FROM data WHERE crc=\"" + input + "\"";
|
||||
|
||||
@@ -73,12 +73,12 @@ namespace SabreTools.Helper
|
||||
{
|
||||
string query = @"
|
||||
CREATE TABLE IF NOT EXISTS data (
|
||||
'id' INTEGER NOT NULL
|
||||
'size' INTEGER NOT NULL
|
||||
'crc' TEXT NOT NULL
|
||||
'md5' TEXT NOT NULL
|
||||
'sha1' TEXT NOT NULL
|
||||
'exists' INTEGER NOT NULL
|
||||
'id' INTEGER NOT NULL,
|
||||
'size' INTEGER NOT NULL,
|
||||
'crc' TEXT NOT NULL,
|
||||
'md5' TEXT NOT NULL,
|
||||
'sha1' TEXT NOT NULL,
|
||||
'indepot' INTEGER NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
)";
|
||||
SqliteCommand slc = new SqliteCommand(query, dbc);
|
||||
@@ -86,8 +86,8 @@ CREATE TABLE IF NOT EXISTS data (
|
||||
|
||||
query = @"
|
||||
CREATE TABLE IF NOT EXISTS dats (
|
||||
'id' INTEGER NOT NULL
|
||||
'hash' TEXT NOT NULL
|
||||
'id' INTEGER NOT NULL,
|
||||
'hash' TEXT NOT NULL,
|
||||
PRIMARY KEY (id, hash)
|
||||
)";
|
||||
slc = new SqliteCommand(query, dbc);
|
||||
|
||||
Reference in New Issue
Block a user