mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Wrap rom insert into a transaction
This commit is contained in:
@@ -526,39 +526,18 @@ SELECT files.id FROM files
|
|||||||
// If the file doesn't exist, add it
|
// If the file doesn't exist, add it
|
||||||
if (!sldr.HasRows)
|
if (!sldr.HasRows)
|
||||||
{
|
{
|
||||||
query = @"
|
query = @"BEGIN;
|
||||||
INSERT INTO files (setid, name, type, lastupdated)
|
INSERT INTO files (setid, name, type, lastupdated)
|
||||||
VALUES (" + gameid + ", '" + rom.Name.Replace("'", "''") + "', '" + rom.Type + "', '" + date + "')";
|
VALUES (" + gameid + ", '" + rom.Name.Replace("'", "''") + "', '" + rom.Type + "', '" + date + @"');
|
||||||
|
INSERT INTO checksums (file, size, crc, md5, sha1)
|
||||||
|
VALUES ((SELECT last_insert_rowid()), " + rom.Size + ", '" + rom.CRC + "'" + ", '" + rom.MD5 + "'" + ", '" + rom.SHA1 + @"');
|
||||||
|
COMMIT;";
|
||||||
using (SqliteCommand slc2 = new SqliteCommand(query, dbc))
|
using (SqliteCommand slc2 = new SqliteCommand(query, dbc))
|
||||||
{
|
{
|
||||||
int affected = slc2.ExecuteNonQuery();
|
int affected = slc2.ExecuteNonQuery();
|
||||||
|
|
||||||
// If the insert was successful, add the checksums for the file
|
// If the insert was unsuccessful, something bad happened
|
||||||
if (affected >= 1)
|
if (affected < 1)
|
||||||
{
|
|
||||||
query = "SELECT last_insert_rowid()";
|
|
||||||
long romid = -1;
|
|
||||||
using (SqliteCommand slc3 = new SqliteCommand(query, dbc))
|
|
||||||
{
|
|
||||||
romid = (long)slc3.ExecuteScalar();
|
|
||||||
}
|
|
||||||
|
|
||||||
query = @"INSERT INTO checksums (file, size, crc, md5, sha1) VALUES (" +
|
|
||||||
romid + ", " + rom.Size + ", '" + rom.CRC + "'" + ", '" + rom.MD5 + "'" + ", '" + rom.SHA1 + "')";
|
|
||||||
using (SqliteCommand slc3 = new SqliteCommand(query, dbc))
|
|
||||||
{
|
|
||||||
affected = slc3.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the insert of the checksums failed, that's bad
|
|
||||||
if (affected < 1)
|
|
||||||
{
|
|
||||||
_logger.Error("There was an error adding checksums for " + rom.Name + " to the database!");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Otherwise, something happened which is bad
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
_logger.Error("There was an error adding " + rom.Name + " to the database!");
|
_logger.Error("There was an error adding " + rom.Name + " to the database!");
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user