Now uses Query/QueryReader

This commit is contained in:
high 2011-07-24 12:04:50 -04:00
parent d39d9e5127
commit e8a5e7fb58
3 changed files with 269 additions and 473 deletions

View file

@ -122,22 +122,13 @@ namespace TShockAPI.DB
region.Area = rect; region.Area = rect;
using (var com = database.CreateCommand()) using (var com = database.CreateCommand())
{ {
if (TShock.Config.StorageType.ToLower() == "sqlite") string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
com.CommandText = "INSERT OR IGNORE INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);" :
"INSERT OR IGNORE INTO Regions VALUES (@tx, @ty, @height, @width, @name, @worldid, @userids, @protected);"; "INSERT IGNORE INTO Regions SET X1=@0, Y1=@1, height=@2, width=@3, RegionName=@4, WorldID=@5, UserIds=@6, Protected=@7;";
else if (TShock.Config.StorageType.ToLower() == "mysql") database.Query(query, region.Area.X, region.Area.Y, region.Area.Width, region.Area.Height, region.Name, region.WorldID, "", region.DisableBuild);
com.CommandText =
"INSERT IGNORE INTO Regions SET X1=@tx, Y1=@ty, height=@height, width=@width, RegionName=@name, WorldID=@world, UserIds=@userids, Protected=@protected;";
com.AddParameter("@tx", region.Area.X);
com.AddParameter("@ty", region.Area.Y);
com.AddParameter("@width", region.Area.Width);
com.AddParameter("@height", region.Area.Height);
com.AddParameter("@name", region.Name);
com.AddParameter("@worldid", region.WorldID);
//Todo: What should this be? We don't really have a way to go from ips to userids //Todo: What should this be? We don't really have a way to go from ips to userids
com.AddParameter("@userids", ""/*string.Join(",", region.AllowedIDs)*/); /*string.Join(",", region.AllowedIDs)*/
com.AddParameter("@protected", region.DisableBuild);
int num = com.ExecuteNonQuery();
} }
} }
} }
@ -157,18 +148,9 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("UPDATE Regions SET WorldID=@0, UserIds=''", Main.worldID.ToString());
{
com.CommandText = "UPDATE Regions SET WorldID=@worldid";
com.AddParameter("@worldid", Main.worldID.ToString());
com.ExecuteNonQuery();
com.Parameters.Clear();
com.CommandText = "UPDATE Regions SET UserIds=@UserIds";
com.AddParameter("@UserIds", "");
com.ExecuteNonQuery();
ReloadAllRegions(); ReloadAllRegions();
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
@ -179,11 +161,7 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT * FROM Regions WHERE WorldID=@0", Main.worldID.ToString()))
{
com.CommandText = "SELECT * FROM Regions WHERE WorldID=@worldid";
com.AddParameter("@worldid", Main.worldID.ToString());
using (var reader = com.ExecuteReader())
{ {
Regions.Clear(); Regions.Clear();
while (reader.Read()) while (reader.Read())
@ -216,8 +194,6 @@ namespace TShockAPI.DB
Regions.Add(r); Regions.Add(r);
} }
reader.Close();
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -228,11 +204,8 @@ namespace TShockAPI.DB
public void ReloadForUnitTest(String n) public void ReloadForUnitTest(String n)
{ {
using (var com = database.CreateCommand())
{ using (var reader = database.QueryReader("SELECT * FROM Regions WHERE WorldID=@0", n))
com.CommandText = "SELECT * FROM Regions WHERE WorldID=@worldid";
com.AddParameter("@worldid", n);
using (var reader = com.ExecuteReader())
{ {
Regions.Clear(); Regions.Clear();
while (reader.Read()) while (reader.Read())
@ -264,32 +237,17 @@ namespace TShockAPI.DB
Regions.Add(r); Regions.Add(r);
} }
reader.Close();
}
} }
} }
public bool AddRegion(int tx, int ty, int width, int height, string regionname, string worldid) public bool AddRegion(int tx, int ty, int width, int height, string regionname, string worldid)
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("INSERT INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);", tx, ty, width, height, regionname, worldid, "", 1);
{
com.CommandText =
"INSERT INTO Regions VALUES (@tx, @ty, @height, @width, @name, @worldid, @userids, @protected);";
com.AddParameter("@tx", tx);
com.AddParameter("@ty", ty);
com.AddParameter("@width", width);
com.AddParameter("@height", height);
com.AddParameter("@name", regionname.ToLower());
com.AddParameter("@worldid", worldid);
com.AddParameter("@userids", "");
com.AddParameter("@protected", 1);
com.ExecuteNonQuery();
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid)); Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid));
return true; return true;
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -302,16 +260,10 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("DELETE FROM Regions WHERE RegionName=@0 AND WorldID=@1", name, Main.worldID.ToString());
{
com.CommandText = "DELETE FROM Regions WHERE RegionName=@name AND WorldID=@worldid";
com.AddParameter("@name", name.ToLower());
com.AddParameter("@worldid", Main.worldID.ToString());
com.ExecuteNonQuery();
Regions.Remove(getRegion(name)); Regions.Remove(getRegion(name));
return true; return true;
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
@ -323,17 +275,10 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("UPDATE Regions SET Protected=@0 WHERE RegionName=@1 AND WorldID=@2", state ? 1 : 0, name, Main.worldID.ToString());
{
com.CommandText = "UPDATE Regions SET Protected=@bool WHERE RegionName=@name AND WorldID=@worldid";
com.AddParameter("@name", name);
com.AddParameter("@bool", state ? 1 : 0);
com.AddParameter("@worldid", Main.worldID.ToString());
com.ExecuteNonQuery();
getRegion(name).DisableBuild = state; getRegion(name).DisableBuild = state;
return true; return true;
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
@ -345,17 +290,10 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("UPDATE Regions SET Protected=@0 WHERE RegionName=@1 AND WorldID=@2", state ? 1 : 0, name, world);
{
com.CommandText = "UPDATE Regions SET Protected=@bool WHERE RegionName=@name AND WorldID=@worldid";
com.AddParameter("@name", name);
com.AddParameter("@bool", state ? 1 : 0);
com.AddParameter("@worldid", world);
com.ExecuteNonQuery();
getRegion(name).DisableBuild = state; getRegion(name).DisableBuild = state;
return true; return true;
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
@ -422,17 +360,10 @@ namespace TShockAPI.DB
public bool AddNewUser(string regionName, String userName) public bool AddNewUser(string regionName, String userName)
{ {
try try
{ {
using (var com = database.CreateCommand())
{
com.CommandText = "SELECT * FROM Regions WHERE RegionName=@name AND WorldID=@worldid";
com.AddParameter("@name", regionName);
com.AddParameter("@worldid", Main.worldID.ToString());
string MergedIDs = string.Empty; string MergedIDs = string.Empty;
using (var reader = com.ExecuteReader()) using (var reader = database.QueryReader("SELECT * FROM Regions WHERE RegionName=@0 AND WorldID=@1", regionName, Main.worldID.ToString()))
{ {
if (reader.Read()) if (reader.Read())
MergedIDs = reader.Get<string>("UserIds"); MergedIDs = reader.Get<string>("UserIds");
@ -442,27 +373,18 @@ namespace TShockAPI.DB
MergedIDs = Convert.ToString(TShock.Users.GetUserID(userName)); MergedIDs = Convert.ToString(TShock.Users.GetUserID(userName));
else else
MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName)); MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName));
com.Parameters.Clear();
com.CommandText = "UPDATE Regions SET UserIds=@ids WHERE RegionName=@name AND WorldID=@worldid"; if (database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", MergedIDs, regionName, Main.worldID.ToString()) > 0)
com.AddParameter("@ids", MergedIDs);
com.AddParameter("@name", regionName);
com.AddParameter("@worldid", Main.worldID.ToString());
if (com.ExecuteNonQuery() > 0)
{ {
ReloadAllRegions(); ReloadAllRegions();
return true; return true;
} }
else
{
return false;
}
}
} }
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
return false;
} }
return false;
} }
/// <summary> /// <summary>
@ -475,17 +397,12 @@ namespace TShockAPI.DB
var regions = new List<Region>(); var regions = new List<Region>();
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT RegionName FROM Regions WHERE WorldID=@0", worldid))
{
com.CommandText = "SELECT RegionName FROM Regions WHERE WorldID=@worldid";
com.AddParameter("@worldid", worldid);
using (var reader = com.ExecuteReader())
{ {
while (reader.Read()) while (reader.Read())
regions.Add(new Region { Name = reader.Get<string>("RegionName") }); regions.Add(new Region { Name = reader.Get<string>("RegionName") });
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());

View file

@ -34,16 +34,12 @@ namespace TShockAPI.DB
{ {
database = db; database = db;
using (var com = database.CreateCommand())
{ string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
if (TShock.Config.StorageType.ToLower() == "sqlite") "CREATE TABLE IF NOT EXISTS 'Users' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 'Username' VARCHAR(32) UNIQUE, 'Password' VARCHAR(64), 'Usergroup' TEXT, 'IP' VARCHAR(32));" :
com.CommandText =
"CREATE TABLE IF NOT EXISTS 'Users' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 'Username' VARCHAR(32) UNIQUE, 'Password' VARCHAR(64), 'Usergroup' TEXT, 'IP' VARCHAR(32));";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
"CREATE TABLE IF NOT EXISTS Users (ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Username VARCHAR(32) UNIQUE, Password VARCHAR(64), Usergroup VARCHAR(255), IP VARCHAR(15));"; "CREATE TABLE IF NOT EXISTS Users (ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Username VARCHAR(32) UNIQUE, Password VARCHAR(64), Usergroup VARCHAR(255), IP VARCHAR(15));";
com.ExecuteNonQuery(); database.Query(query);
String file = Path.Combine(TShock.SavePath, "users.txt"); String file = Path.Combine(TShock.SavePath, "users.txt");
if (File.Exists(file)) if (File.Exists(file))
@ -56,11 +52,6 @@ namespace TShockAPI.DB
if (line.Equals("") || line.Substring(0, 1).Equals("#")) if (line.Equals("") || line.Substring(0, 1).Equals("#"))
continue; continue;
String[] info = line.Split(' '); String[] info = line.Split(' ');
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText = "INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@name, @pass, @group, @ip);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText = "INSERT IGNORE INTO Users SET Username=@name, Password=@pass, Usergroup=@group, IP=@ip ;";
String username = ""; String username = "";
String sha = ""; String sha = "";
String group = ""; String group = "";
@ -80,12 +71,12 @@ namespace TShockAPI.DB
sha = nameSha[1]; sha = nameSha[1];
group = info[1]; group = info[1];
} }
com.AddParameter("@name", username.Trim());
com.AddParameter("@pass", sha.Trim()); query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
com.AddParameter("@group", group.Trim()); "INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@0, @1, @2, @3)" :
com.AddParameter("@ip", ip.Trim()); "INSERT IGNORE INTO Users SET Username=@0, Password=@1, Usergroup=@2, IP=@3";
com.ExecuteNonQuery();
com.Parameters.Clear(); database.Query(query, username.Trim(), sha.Trim(), group.Trim(), ip.Trim());
} }
} }
String path = Path.Combine(TShock.SavePath, "old_configs"); String path = Path.Combine(TShock.SavePath, "old_configs");
@ -96,7 +87,7 @@ namespace TShockAPI.DB
File.Delete(file2); File.Delete(file2);
File.Move(file, file2); File.Move(file, file2);
} }
}
} }
/// <summary> /// <summary>
@ -107,25 +98,12 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand())
{
com.CommandText = "INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@name, @password, @group, @ip);";
com.AddParameter("@name", user.Name);
com.AddParameter("@password", Tools.HashPassword(user.Password));
if (!TShock.Groups.GroupExists(user.Group)) if (!TShock.Groups.GroupExists(user.Group))
throw new GroupNotExistsException(user.Group); throw new GroupNotExistsException(user.Group);
com.AddParameter("@group", user.Group); if (database.Query("INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@0, @1, @2, @3);", user.Name, Tools.HashPassword(user.Password), user.Group, user.Address) < 1)
com.AddParameter("@ip", user.Address);
using (var reader = com.ExecuteReader())
{
if (reader.RecordsAffected < 1)
throw new UserExistsException(user.Name); throw new UserExistsException(user.Name);
} }
}
}
catch (Exception ex) catch (Exception ex)
{ {
throw new UserManagerException("AddUser SQL returned an error", ex); throw new UserManagerException("AddUser SQL returned an error", ex);
@ -140,26 +118,19 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) int affected = -1;
{
if (!string.IsNullOrEmpty(user.Address)) if (!string.IsNullOrEmpty(user.Address))
{ {
com.CommandText = "DELETE FROM Users WHERE IP=@ip"; affected = database.Query("DELETE FROM Users WHERE IP=@0", user.Address);
com.AddParameter("@ip", user.Address);
} }
else else
{ {
com.CommandText = "DELETE FROM Users WHERE Username=@name"; affected = database.Query("DELETE FROM Users WHERE Username=@0", user.Name);
com.AddParameter("@name", user.Name);
} }
using (var reader = com.ExecuteReader()) if (affected < 1)
{
if (reader.RecordsAffected < 1)
throw new UserNotExistException(string.IsNullOrEmpty(user.Address) ? user.Name : user.Address); throw new UserNotExistException(string.IsNullOrEmpty(user.Address) ? user.Name : user.Address);
} }
}
}
catch (Exception ex) catch (Exception ex)
{ {
throw new UserManagerException("RemoveUser SQL returned an error", ex); throw new UserManagerException("RemoveUser SQL returned an error", ex);
@ -176,19 +147,9 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) if (database.Query("UPDATE Users SET Password = @0 WHERE Username = @1;", Tools.HashPassword(password), user.Name) < 1)
{
com.CommandText = "UPDATE Users SET Password = @password WHERE Username = @name;";
com.AddParameter("@name", user.Name);
com.AddParameter("@password", Tools.HashPassword(password));
using (var reader = com.ExecuteReader())
{
if (reader.RecordsAffected < 1)
throw new UserExistsException(user.Name); throw new UserExistsException(user.Name);
} }
}
}
catch (Exception ex) catch (Exception ex)
{ {
throw new UserManagerException("SetUserPassword SQL returned an error", ex); throw new UserManagerException("SetUserPassword SQL returned an error", ex);
@ -204,23 +165,12 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand())
{
com.CommandText = "UPDATE Users SET UserGroup = @group WHERE Username = @name;";
com.AddParameter("@name", user.Name);
if (!TShock.Groups.GroupExists(group)) if (!TShock.Groups.GroupExists(group))
throw new GroupNotExistsException(group); throw new GroupNotExistsException(group);
com.AddParameter("@group", group); if (database.Query("UPDATE Users SET UserGroup = @0 WHERE Username = @1;", group, user.Name) < 1)
using (var reader = com.ExecuteReader())
{
if (reader.RecordsAffected < 1)
throw new UserExistsException(user.Name); throw new UserExistsException(user.Name);
} }
}
}
catch (Exception ex) catch (Exception ex)
{ {
throw new UserManagerException("SetUserGroup SQL returned an error", ex); throw new UserManagerException("SetUserGroup SQL returned an error", ex);
@ -238,12 +188,7 @@ namespace TShockAPI.DB
string[] returndata = new string[2]; string[] returndata = new string[2];
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT * FROM Users WHERE Username=@0", username))
{
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
com.AddParameter("@name", username.ToLower());
using (var reader = com.ExecuteReader())
{ {
if (reader.Read()) if (reader.Read())
{ {
@ -254,7 +199,6 @@ namespace TShockAPI.DB
reader.Close(); reader.Close();
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.ConsoleError("FetchHashedPasswordAndGroup SQL returned an error: " + ex.ToString()); Log.ConsoleError("FetchHashedPasswordAndGroup SQL returned an error: " + ex.ToString());
@ -266,19 +210,12 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT * FROM Users WHERE Username=@0", username))
{
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
com.AddParameter("@name", username.ToLower());
using (var reader = com.ExecuteReader())
{ {
if (reader.Read()) if (reader.Read())
{ {
return reader.Get<int>("ID"); return reader.Get<int>("ID");
} }
reader.Close();
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -296,12 +233,7 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT * FROM Users WHERE IP=@0", ip))
{
com.CommandText = "SELECT * FROM Users WHERE IP=@ip";
com.AddParameter("@ip", ip);
using (var reader = com.ExecuteReader())
{ {
if (reader.Read()) if (reader.Read())
{ {
@ -310,7 +242,6 @@ namespace TShockAPI.DB
} }
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.ConsoleError("GetGroupForIP SQL returned an error: " + ex.ToString()); Log.ConsoleError("GetGroupForIP SQL returned an error: " + ex.ToString());
@ -322,19 +253,13 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT IP, UserGroup FROM Users"))
{
com.CommandText = "SELECT * FROM Users";
using (var reader = com.ExecuteReader())
{ {
while (reader.Read()) while (reader.Read())
{ {
if (Tools.GetIPv4Address(reader.Get<string>("IP")) == ip) if (Tools.GetIPv4Address(reader.Get<string>("IP")) == ip)
{ {
string group = reader.Get<string>("UserGroup"); return Tools.GetGroup(reader.Get<string>("UserGroup"));
return Tools.GetGroup(group);
}
} }
} }
} }
@ -373,20 +298,17 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) IDataReader result;
{
if (string.IsNullOrEmpty(user.Address)) if (string.IsNullOrEmpty(user.Address))
{ {
com.CommandText = "SELECT * FROM Users WHERE Username=@name"; result = database.QueryReader("SELECT * FROM Users WHERE Username=@0", user.Name);
com.AddParameter("@name", user.Name);
} }
else else
{ {
com.CommandText = "SELECT * FROM Users WHERE IP=@ip"; result = database.QueryReader("SELECT * FROM Users WHERE IP=@0", user.Address);
com.AddParameter("@ip", user.Address);
} }
using (var reader = com.ExecuteReader()) using (var reader = result)
{ {
if (reader.Read()) if (reader.Read())
{ {
@ -396,7 +318,6 @@ namespace TShockAPI.DB
} }
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
throw new UserManagerException("GetUserID SQL returned an error", ex); throw new UserManagerException("GetUserID SQL returned an error", ex);

View file

@ -34,16 +34,11 @@ namespace TShockAPI.DB
{ {
database = db; database = db;
using (var com = database.CreateCommand()) string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
{ "CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);" :
if (TShock.Config.StorageType.ToLower() == "sqlite")
com.CommandText =
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);";
else if (TShock.Config.StorageType.ToLower() == "mysql")
com.CommandText =
"CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));"; "CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));";
com.ExecuteNonQuery(); database.Query(query);
String file = Path.Combine(TShock.SavePath, "warps.xml"); String file = Path.Combine(TShock.SavePath, "warps.xml");
String name = ""; String name = "";
@ -102,16 +97,10 @@ namespace TShockAPI.DB
case XmlNodeType.EndElement: case XmlNodeType.EndElement:
if (reader.Name.Equals("Warp")) if (reader.Name.Equals("Warp"))
{ {
if (TShock.Config.StorageType.ToLower() == "sqlite") query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
com.CommandText = "INSERT OR IGNORE INTO Warps VALUES (@tx, @ty,@name, @worldid);"; "INSERT OR IGNORE INTO Warps VALUES (@0, @1,@2, @3);" :
else if (TShock.Config.StorageType.ToLower() == "mysql") "INSERT IGNORE INTO Warps SET X=@0, Y=@1, WarpName=@2, WorldID=@3;";
com.CommandText = "INSERT IGNORE INTO Warps SET X=@tx, Y=@ty, WarpName=@name, WorldID=@worldid;"; database.Query(query, x1, y1, name, world);
com.AddParameter("@tx", x1);
com.AddParameter("@ty", y1);
com.AddParameter("@name", name);
com.AddParameter("@worldid", world);
com.ExecuteNonQuery();
com.Parameters.Clear();
} }
break; break;
} }
@ -127,19 +116,14 @@ namespace TShockAPI.DB
File.Delete(file2); File.Delete(file2);
//File.Move(file, file2); //File.Move(file, file2);
} }
}
} }
public void ConvertDB() public void ConvertDB()
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("UPDATE Warps SET WorldID=@0", Main.worldID.ToString());
{
com.CommandText = "UPDATE Warps SET WorldID=@worldid";
com.AddParameter("@worldid", Main.worldID.ToString());
com.ExecuteNonQuery();
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -151,17 +135,9 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@0, @1, @2, @3);", x, y, name, worldid);
{
com.CommandText = "INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@x, @y, @name, @worldid);";
com.AddParameter("@x", x);
com.AddParameter("@y", y);
com.AddParameter("@name", name.ToLower());
com.AddParameter("@worldid", worldid);
com.ExecuteNonQuery();
return true; return true;
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
@ -173,15 +149,9 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) database.Query("DELETE FROM Warps WHERE WarpName=@0 AND WorldID=@1", name, Main.worldID.ToString());
{
com.CommandText = "DELETE FROM Warps WHERE WarpName=@name AND WorldID=@worldid";
com.AddParameter("@name", name.ToLower());
com.AddParameter("@worldid", Main.worldID.ToString());
com.ExecuteNonQuery();
return true; return true;
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());
@ -193,19 +163,12 @@ namespace TShockAPI.DB
{ {
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT * FROM Warps WHERE WarpName=@0 AND WorldID=@1", name, Main.worldID.ToString()))
{
com.CommandText = "SELECT * FROM Warps WHERE WarpName=@name AND WorldID=@worldid";
com.AddParameter("@name", name);
com.AddParameter("@worldid", Main.worldID.ToString());
using (var reader = com.ExecuteReader())
{ {
if (reader.Read()) if (reader.Read())
{ {
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID")); return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"));
} }
reader.Close();
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -225,17 +188,12 @@ namespace TShockAPI.DB
var warps = new List<Warp>(); var warps = new List<Warp>();
try try
{ {
using (var com = database.CreateCommand()) using (var reader = database.QueryReader("SELECT WarpName FROM Warps WHERE WorldID=@0", worldid))
{
com.CommandText = "SELECT WarpName FROM Warps WHERE WorldID=@worldid";
com.AddParameter("@worldid", worldid);
using (var reader = com.ExecuteReader())
{ {
while (reader.Read()) while (reader.Read())
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") }); warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.ToString()); Log.Error(ex.ToString());