From 4fe042aa7fcafaffe78d612efec31662fb4358bf Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 14 Nov 2012 04:45:59 +0000 Subject: [PATCH] More consistently dispose of SqliteCommand in OpenSim.Data.SQLite where possible. Not doing SQLiteInventoryStore since this is no longer used and should disappear in the future. --- OpenSim/Data/SQLite/SQLiteAssetData.cs | 14 +- .../Data/SQLite/SQLiteAuthenticationData.cs | 149 ++++++------ OpenSim/Data/SQLite/SQLiteAvatarData.cs | 22 +- OpenSim/Data/SQLite/SQLiteEstateData.cs | 216 ++++++++++-------- OpenSim/Data/SQLite/SQLiteFramework.cs | 9 +- OpenSim/Data/SQLite/SQLiteFriendsData.cs | 25 +- .../Data/SQLite/SQLiteGenericTableHandler.cs | 124 +++++----- OpenSim/Data/SQLite/SQLiteUserAccountData.cs | 25 +- OpenSim/Data/SQLite/SQLiteXInventoryData.cs | 51 +++-- 9 files changed, 321 insertions(+), 314 deletions(-) diff --git a/OpenSim/Data/SQLite/SQLiteAssetData.cs b/OpenSim/Data/SQLite/SQLiteAssetData.cs index d0e24c325c..61e7aaf3c7 100644 --- a/OpenSim/Data/SQLite/SQLiteAssetData.cs +++ b/OpenSim/Data/SQLite/SQLiteAssetData.cs @@ -202,7 +202,8 @@ namespace OpenSim.Data.SQLite /// True if exist, or false. override public bool ExistsAsset(UUID uuid) { - lock (this) { + lock (this) + { using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn)) { cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); @@ -353,12 +354,13 @@ namespace OpenSim.Data.SQLite { lock (this) { - using (SqliteCommand cmd = new SqliteCommand(DeleteAssetSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); - cmd.ExecuteNonQuery(); - } + using (SqliteCommand cmd = new SqliteCommand(DeleteAssetSQL, m_conn)) + { + cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); + cmd.ExecuteNonQuery(); + } } + return true; } diff --git a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs index 5120453d1b..0428c11f76 100644 --- a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs +++ b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs @@ -82,11 +82,14 @@ namespace OpenSim.Data.SQLite { AuthenticationData ret = new AuthenticationData(); ret.Data = new Dictionary(); + IDataReader result; - SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = :PrincipalID"); - cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); + using (SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = :PrincipalID")) + { + cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); - IDataReader result = ExecuteReader(cmd, m_Connection); + result = ExecuteReader(cmd, m_Connection); + } try { @@ -121,10 +124,6 @@ namespace OpenSim.Data.SQLite catch { } - finally - { - //CloseCommand(cmd); - } return null; } @@ -140,84 +139,81 @@ namespace OpenSim.Data.SQLite foreach (object o in data.Data.Values) values[i++] = o.ToString(); - SqliteCommand cmd = new SqliteCommand(); - - if (Get(data.PrincipalID) != null) + using (SqliteCommand cmd = new SqliteCommand()) { - - - string update = "update `" + m_Realm + "` set "; - bool first = true; - foreach (string field in fields) + if (Get(data.PrincipalID) != null) { - if (!first) - update += ", "; - update += "`" + field + "` = :" + field; - cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); - first = false; - } - update += " where UUID = :UUID"; - cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); - - cmd.CommandText = update; - try - { - if (ExecuteNonQuery(cmd, m_Connection) < 1) + string update = "update `" + m_Realm + "` set "; + bool first = true; + foreach (string field in fields) { + if (!first) + update += ", "; + update += "`" + field + "` = :" + field; + cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); + + first = false; + } + + update += " where UUID = :UUID"; + cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); + + cmd.CommandText = update; + try + { + if (ExecuteNonQuery(cmd, m_Connection) < 1) + { + //CloseCommand(cmd); + return false; + } + } + catch (Exception e) + { + m_log.Error("[SQLITE]: Exception storing authentication data", e); //CloseCommand(cmd); return false; } } - catch (Exception e) + else { - m_log.Error("[SQLITE]: Exception storing authentication data", e); - //CloseCommand(cmd); - return false; - } - } + string insert = "insert into `" + m_Realm + "` (`UUID`, `" + + String.Join("`, `", fields) + + "`) values (:UUID, :" + String.Join(", :", fields) + ")"; - else - { - string insert = "insert into `" + m_Realm + "` (`UUID`, `" + - String.Join("`, `", fields) + - "`) values (:UUID, :" + String.Join(", :", fields) + ")"; + cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); + foreach (string field in fields) + cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); - cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); - foreach (string field in fields) - cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); + cmd.CommandText = insert; - cmd.CommandText = insert; - - try - { - if (ExecuteNonQuery(cmd, m_Connection) < 1) + try { - //CloseCommand(cmd); + if (ExecuteNonQuery(cmd, m_Connection) < 1) + { + return false; + } + } + catch (Exception e) + { + Console.WriteLine(e.ToString()); return false; } } - catch (Exception e) - { - Console.WriteLine(e.ToString()); - //CloseCommand(cmd); - return false; - } } - //CloseCommand(cmd); - return true; } public bool SetDataItem(UUID principalID, string item, string value) { - SqliteCommand cmd = new SqliteCommand("update `" + m_Realm + - "` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'"); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - return true; + using (SqliteCommand cmd = new SqliteCommand("update `" + m_Realm + + "` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'")) + { + if (ExecuteNonQuery(cmd, m_Connection) > 0) + return true; + } return false; } @@ -227,16 +223,13 @@ namespace OpenSim.Data.SQLite if (System.Environment.TickCount - m_LastExpire > 30000) DoExpire(); - SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() + - "', '" + token + "', datetime('now', 'localtime', '+" + lifetime.ToString() + " minutes'))"); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) + using (SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() + + "', '" + token + "', datetime('now', 'localtime', '+" + lifetime.ToString() + " minutes'))")) { - cmd.Dispose(); - return true; + if (ExecuteNonQuery(cmd, m_Connection) > 0) + return true; } - cmd.Dispose(); return false; } @@ -245,28 +238,22 @@ namespace OpenSim.Data.SQLite if (System.Environment.TickCount - m_LastExpire > 30000) DoExpire(); - SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now', 'localtime', '+" + lifetime.ToString() + - " minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')"); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) + using (SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now', 'localtime', '+" + lifetime.ToString() + + " minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')")) { - cmd.Dispose(); - return true; + if (ExecuteNonQuery(cmd, m_Connection) > 0) + return true; } - cmd.Dispose(); - return false; } private void DoExpire() { - SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now', 'localtime')"); - ExecuteNonQuery(cmd, m_Connection); - - cmd.Dispose(); + using (SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now', 'localtime')")) + ExecuteNonQuery(cmd, m_Connection); m_LastExpire = System.Environment.TickCount; } } -} +} \ No newline at end of file diff --git a/OpenSim/Data/SQLite/SQLiteAvatarData.cs b/OpenSim/Data/SQLite/SQLiteAvatarData.cs index faf34da573..c6d615be14 100644 --- a/OpenSim/Data/SQLite/SQLiteAvatarData.cs +++ b/OpenSim/Data/SQLite/SQLiteAvatarData.cs @@ -56,23 +56,17 @@ namespace OpenSim.Data.SQLite public bool Delete(UUID principalID, string name) { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("delete from {0} where `PrincipalID` = :PrincipalID and `Name` = :Name", m_Realm); - cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString()); - cmd.Parameters.AddWithValue(":Name", name); - - try + using (SqliteCommand cmd = new SqliteCommand()) { + cmd.CommandText = String.Format("delete from {0} where `PrincipalID` = :PrincipalID and `Name` = :Name", m_Realm); + cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString()); + cmd.Parameters.AddWithValue(":Name", name); + if (ExecuteNonQuery(cmd, m_Connection) > 0) return true; + } - return false; - } - finally - { - //CloseCommand(cmd); - } + return false; } } -} +} \ No newline at end of file diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index c042ba2bd3..d51f2d413d 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs @@ -104,12 +104,13 @@ namespace OpenSim.Data.SQLite { string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = :RegionID"; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = sql; + cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); - cmd.CommandText = sql; - cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); - - return DoLoad(cmd, regionID, create); + return DoLoad(cmd, regionID, create); + } } private EstateSettings DoLoad(SqliteCommand cmd, UUID regionID, bool create) @@ -186,38 +187,40 @@ namespace OpenSim.Data.SQLite { List names = new List(FieldList); - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); IDataReader r = null; - names.Remove("EstateID"); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + names.Remove("EstateID"); - string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; + string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; - cmd.CommandText = sql; - cmd.Parameters.Clear(); + cmd.CommandText = sql; + cmd.Parameters.Clear(); - foreach (string name in FieldList) - { - if (m_FieldMap[name].GetValue(es) is bool) + foreach (string name in FieldList) { - if ((bool)m_FieldMap[name].GetValue(es)) - cmd.Parameters.AddWithValue(":"+name, "1"); + if (m_FieldMap[name].GetValue(es) is bool) + { + if ((bool)m_FieldMap[name].GetValue(es)) + cmd.Parameters.AddWithValue(":"+name, "1"); + else + cmd.Parameters.AddWithValue(":"+name, "0"); + } else - cmd.Parameters.AddWithValue(":"+name, "0"); - } - else - { - cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString()); + { + cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString()); + } } + + cmd.ExecuteNonQuery(); + + cmd.CommandText = "select LAST_INSERT_ROWID() as id"; + cmd.Parameters.Clear(); + + r = cmd.ExecuteReader(); } - cmd.ExecuteNonQuery(); - - cmd.CommandText = "select LAST_INSERT_ROWID() as id"; - cmd.Parameters.Clear(); - - r = cmd.ExecuteReader(); - r.Read(); es.EstateID = Convert.ToUInt32(r["id"]); @@ -239,26 +242,27 @@ namespace OpenSim.Data.SQLite string sql = "update estate_settings set "+String.Join(", ", terms.ToArray())+" where EstateID = :EstateID"; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - - foreach (string name in FieldList) + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) { - if (m_FieldMap[name].GetValue(es) is bool) - { - if ((bool)m_FieldMap[name].GetValue(es)) - cmd.Parameters.AddWithValue(":"+name, "1"); - else - cmd.Parameters.AddWithValue(":"+name, "0"); - } - else - { - cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString()); - } - } + cmd.CommandText = sql; - cmd.ExecuteNonQuery(); + foreach (string name in FieldList) + { + if (m_FieldMap[name].GetValue(es) is bool) + { + if ((bool)m_FieldMap[name].GetValue(es)) + cmd.Parameters.AddWithValue(":"+name, "1"); + else + cmd.Parameters.AddWithValue(":"+name, "0"); + } + else + { + cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString()); + } + } + + cmd.ExecuteNonQuery(); + } SaveBanList(es); SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers); @@ -270,12 +274,15 @@ namespace OpenSim.Data.SQLite { es.ClearBans(); - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + IDataReader r; - cmd.CommandText = "select bannedUUID from estateban where EstateID = :EstateID"; - cmd.Parameters.AddWithValue(":EstateID", es.EstateID); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = "select bannedUUID from estateban where EstateID = :EstateID"; + cmd.Parameters.AddWithValue(":EstateID", es.EstateID); - IDataReader r = cmd.ExecuteReader(); + r = cmd.ExecuteReader(); + } while (r.Read()) { @@ -294,60 +301,64 @@ namespace OpenSim.Data.SQLite private void SaveBanList(EstateSettings es) { - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "delete from estateban where EstateID = :EstateID"; - cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString()); - - cmd.ExecuteNonQuery(); - - cmd.Parameters.Clear(); - - cmd.CommandText = "insert into estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask) values ( :EstateID, :bannedUUID, '', '', '' )"; - - foreach (EstateBan b in es.EstateBans) + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) { + cmd.CommandText = "delete from estateban where EstateID = :EstateID"; cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString()); - cmd.Parameters.AddWithValue(":bannedUUID", b.BannedUserID.ToString()); cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + + cmd.CommandText = "insert into estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask) values ( :EstateID, :bannedUUID, '', '', '' )"; + + foreach (EstateBan b in es.EstateBans) + { + cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString()); + cmd.Parameters.AddWithValue(":bannedUUID", b.BannedUserID.ToString()); + + cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + } } } void SaveUUIDList(uint EstateID, string table, UUID[] data) { - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "delete from "+table+" where EstateID = :EstateID"; - cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString()); - - cmd.ExecuteNonQuery(); - - cmd.Parameters.Clear(); - - cmd.CommandText = "insert into "+table+" (EstateID, uuid) values ( :EstateID, :uuid )"; - - foreach (UUID uuid in data) + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) { + cmd.CommandText = "delete from "+table+" where EstateID = :EstateID"; cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString()); - cmd.Parameters.AddWithValue(":uuid", uuid.ToString()); cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + + cmd.CommandText = "insert into "+table+" (EstateID, uuid) values ( :EstateID, :uuid )"; + + foreach (UUID uuid in data) + { + cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString()); + cmd.Parameters.AddWithValue(":uuid", uuid.ToString()); + + cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + } } } UUID[] LoadUUIDList(uint EstateID, string table) { List uuids = new List(); + IDataReader r; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = "select uuid from "+table+" where EstateID = :EstateID"; + cmd.Parameters.AddWithValue(":EstateID", EstateID); - cmd.CommandText = "select uuid from "+table+" where EstateID = :EstateID"; - cmd.Parameters.AddWithValue(":EstateID", EstateID); - - IDataReader r = cmd.ExecuteReader(); + r = cmd.ExecuteReader(); + } while (r.Read()) { @@ -367,12 +378,13 @@ namespace OpenSim.Data.SQLite { string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_settings where estate_settings.EstateID = :EstateID"; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = sql; + cmd.Parameters.AddWithValue(":EstateID", estateID.ToString()); - cmd.CommandText = sql; - cmd.Parameters.AddWithValue(":EstateID", estateID.ToString()); - - return DoLoad(cmd, UUID.Zero, false); + return DoLoad(cmd, UUID.Zero, false); + } } public List LoadEstateSettingsAll() @@ -391,13 +403,15 @@ namespace OpenSim.Data.SQLite List result = new List(); string sql = "select EstateID from estate_settings where estate_settings.EstateName = :EstateName"; + IDataReader r; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = sql; + cmd.Parameters.AddWithValue(":EstateName", search); - cmd.CommandText = sql; - cmd.Parameters.AddWithValue(":EstateName", search); - - IDataReader r = cmd.ExecuteReader(); + r = cmd.ExecuteReader(); + } while (r.Read()) { @@ -413,12 +427,14 @@ namespace OpenSim.Data.SQLite List result = new List(); string sql = "select EstateID from estate_settings"; + IDataReader r; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = sql; - cmd.CommandText = sql; - - IDataReader r = cmd.ExecuteReader(); + r = cmd.ExecuteReader(); + } while (r.Read()) { @@ -434,13 +450,15 @@ namespace OpenSim.Data.SQLite List result = new List(); string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner"; + IDataReader r; - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = sql; + cmd.Parameters.AddWithValue(":EstateOwner", ownerID); - cmd.CommandText = sql; - cmd.Parameters.AddWithValue(":EstateOwner", ownerID); - - IDataReader r = cmd.ExecuteReader(); + r = cmd.ExecuteReader(); + } while (r.Read()) { diff --git a/OpenSim/Data/SQLite/SQLiteFramework.cs b/OpenSim/Data/SQLite/SQLiteFramework.cs index 159471723e..35b9a2fe31 100644 --- a/OpenSim/Data/SQLite/SQLiteFramework.cs +++ b/OpenSim/Data/SQLite/SQLiteFramework.cs @@ -90,12 +90,5 @@ namespace OpenSim.Data.SQLite return cmd.ExecuteReader(); } } - - protected void CloseCommand(SqliteCommand cmd) - { - cmd.Connection.Close(); - cmd.Connection.Dispose(); - cmd.Dispose(); - } } -} +} \ No newline at end of file diff --git a/OpenSim/Data/SQLite/SQLiteFriendsData.cs b/OpenSim/Data/SQLite/SQLiteFriendsData.cs index 5f68977c1f..cab85eb703 100644 --- a/OpenSim/Data/SQLite/SQLiteFriendsData.cs +++ b/OpenSim/Data/SQLite/SQLiteFriendsData.cs @@ -53,13 +53,13 @@ namespace OpenSim.Data.SQLite public FriendsData[] GetFriends(string userID) { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = :PrincipalID", m_Realm); - cmd.Parameters.AddWithValue(":PrincipalID", userID.ToString()); - - return DoQuery(cmd); + using (SqliteCommand cmd = new SqliteCommand()) + { + cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = :PrincipalID", m_Realm); + cmd.Parameters.AddWithValue(":PrincipalID", userID.ToString()); + return DoQuery(cmd); + } } public bool Delete(UUID principalID, string friend) @@ -69,13 +69,14 @@ namespace OpenSim.Data.SQLite public bool Delete(string principalID, string friend) { - SqliteCommand cmd = new SqliteCommand(); + using (SqliteCommand cmd = new SqliteCommand()) + { + cmd.CommandText = String.Format("delete from {0} where PrincipalID = :PrincipalID and Friend = :Friend", m_Realm); + cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString()); + cmd.Parameters.AddWithValue(":Friend", friend); - cmd.CommandText = String.Format("delete from {0} where PrincipalID = :PrincipalID and Friend = :Friend", m_Realm); - cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString()); - cmd.Parameters.AddWithValue(":Friend", friend); - - ExecuteNonQuery(cmd, m_Connection); + ExecuteNonQuery(cmd, m_Connection); + } return true; } diff --git a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs index 4f977a80e8..917a0a1504 100644 --- a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs +++ b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs @@ -132,22 +132,23 @@ namespace OpenSim.Data.SQLite List terms = new List(); - SqliteCommand cmd = new SqliteCommand(); - - for (int i = 0 ; i < fields.Length ; i++) + using (SqliteCommand cmd = new SqliteCommand()) { - cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); - terms.Add("`" + fields[i] + "` = :" + fields[i]); + for (int i = 0 ; i < fields.Length ; i++) + { + cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); + terms.Add("`" + fields[i] + "` = :" + fields[i]); + } + + string where = String.Join(" and ", terms.ToArray()); + + string query = String.Format("select * from {0} where {1}", + m_Realm, where); + + cmd.CommandText = query; + + return DoQuery(cmd); } - - string where = String.Join(" and ", terms.ToArray()); - - string query = String.Format("select * from {0} where {1}", - m_Realm, where); - - cmd.CommandText = query; - - return DoQuery(cmd); } protected T[] DoQuery(SqliteCommand cmd) @@ -214,51 +215,53 @@ namespace OpenSim.Data.SQLite public T[] Get(string where) { - SqliteCommand cmd = new SqliteCommand(); + using (SqliteCommand cmd = new SqliteCommand()) + { + string query = String.Format("select * from {0} where {1}", + m_Realm, where); - string query = String.Format("select * from {0} where {1}", - m_Realm, where); + cmd.CommandText = query; - cmd.CommandText = query; - - return DoQuery(cmd); + return DoQuery(cmd); + } } public bool Store(T row) { - SqliteCommand cmd = new SqliteCommand(); - - string query = ""; - List names = new List(); - List values = new List(); - - foreach (FieldInfo fi in m_Fields.Values) + using (SqliteCommand cmd = new SqliteCommand()) { - names.Add(fi.Name); - values.Add(":" + fi.Name); - cmd.Parameters.Add(new SqliteParameter(":" + fi.Name, fi.GetValue(row).ToString())); - } + string query = ""; + List names = new List(); + List values = new List(); - if (m_DataField != null) - { - Dictionary data = - (Dictionary)m_DataField.GetValue(row); - - foreach (KeyValuePair kvp in data) + foreach (FieldInfo fi in m_Fields.Values) { - names.Add(kvp.Key); - values.Add(":" + kvp.Key); - cmd.Parameters.Add(new SqliteParameter(":" + kvp.Key, kvp.Value)); + names.Add(fi.Name); + values.Add(":" + fi.Name); + cmd.Parameters.Add(new SqliteParameter(":" + fi.Name, fi.GetValue(row).ToString())); } + + if (m_DataField != null) + { + Dictionary data = + (Dictionary)m_DataField.GetValue(row); + + foreach (KeyValuePair kvp in data) + { + names.Add(kvp.Key); + values.Add(":" + kvp.Key); + cmd.Parameters.Add(new SqliteParameter(":" + kvp.Key, kvp.Value)); + } + } + + query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values (" + String.Join(",", values.ToArray()) + ")"; + + cmd.CommandText = query; + + if (ExecuteNonQuery(cmd, m_Connection) > 0) + return true; } - query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values (" + String.Join(",", values.ToArray()) + ")"; - - cmd.CommandText = query; - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - return true; - return false; } @@ -274,21 +277,22 @@ namespace OpenSim.Data.SQLite List terms = new List(); - SqliteCommand cmd = new SqliteCommand(); - - for (int i = 0 ; i < fields.Length ; i++) + using (SqliteCommand cmd = new SqliteCommand()) { - cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); - terms.Add("`" + fields[i] + "` = :" + fields[i]); + for (int i = 0 ; i < fields.Length ; i++) + { + cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); + terms.Add("`" + fields[i] + "` = :" + fields[i]); + } + + string where = String.Join(" and ", terms.ToArray()); + + string query = String.Format("delete from {0} where {1}", m_Realm, where); + + cmd.CommandText = query; + + return ExecuteNonQuery(cmd, m_Connection) > 0; } - - string where = String.Join(" and ", terms.ToArray()); - - string query = String.Format("delete from {0} where {1}", m_Realm, where); - - cmd.CommandText = query; - - return ExecuteNonQuery(cmd, m_Connection) > 0; } } } diff --git a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs index 7a5de5073d..f98d37660f 100644 --- a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs +++ b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs @@ -66,20 +66,21 @@ namespace OpenSim.Data.SQLite if (words.Length > 2) return new UserAccountData[0]; - SqliteCommand cmd = new SqliteCommand(); - - if (words.Length == 1) + using (SqliteCommand cmd = new SqliteCommand()) { - cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')", - m_Realm, scopeID.ToString(), words[0]); - } - else - { - cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{3}%')", - m_Realm, scopeID.ToString(), words[0], words[1]); - } + if (words.Length == 1) + { + cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')", + m_Realm, scopeID.ToString(), words[0]); + } + else + { + cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{3}%')", + m_Realm, scopeID.ToString(), words[0], words[1]); + } - return DoQuery(cmd); + return DoQuery(cmd); + } } } } diff --git a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs index 75f8c8754c..8eb1a63996 100644 --- a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs +++ b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs @@ -139,35 +139,41 @@ namespace OpenSim.Data.SQLite public bool MoveItem(string id, string newParent) { - SqliteCommand cmd = new SqliteCommand(); + using (SqliteCommand cmd = new SqliteCommand()) + { + cmd.CommandText = String.Format("update {0} set parentFolderID = :ParentFolderID where inventoryID = :InventoryID", m_Realm); + cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParent)); + cmd.Parameters.Add(new SqliteParameter(":InventoryID", id)); - cmd.CommandText = String.Format("update {0} set parentFolderID = :ParentFolderID where inventoryID = :InventoryID", m_Realm); - cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParent)); - cmd.Parameters.Add(new SqliteParameter(":InventoryID", id)); - - return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true; + return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true; + } } public XInventoryItem[] GetActiveGestures(UUID principalID) { - SqliteCommand cmd = new SqliteCommand(); - cmd.CommandText = String.Format("select * from inventoryitems where avatarId = :uuid and assetType = :type and flags = 1", m_Realm); + using (SqliteCommand cmd = new SqliteCommand()) + { + cmd.CommandText = String.Format("select * from inventoryitems where avatarId = :uuid and assetType = :type and flags = 1", m_Realm); - cmd.Parameters.Add(new SqliteParameter(":uuid", principalID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":type", (int)AssetType.Gesture)); + cmd.Parameters.Add(new SqliteParameter(":uuid", principalID.ToString())); + cmd.Parameters.Add(new SqliteParameter(":type", (int)AssetType.Gesture)); - return DoQuery(cmd); + return DoQuery(cmd); + } } public int GetAssetPermissions(UUID principalID, UUID assetID) { - SqliteCommand cmd = new SqliteCommand(); + IDataReader reader; - cmd.CommandText = String.Format("select inventoryCurrentPermissions from inventoryitems where avatarID = :PrincipalID and assetID = :AssetID", m_Realm); - cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":AssetID", assetID.ToString())); + using (SqliteCommand cmd = new SqliteCommand()) + { + cmd.CommandText = String.Format("select inventoryCurrentPermissions from inventoryitems where avatarID = :PrincipalID and assetID = :AssetID", m_Realm); + cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); + cmd.Parameters.Add(new SqliteParameter(":AssetID", assetID.ToString())); - IDataReader reader = ExecuteReader(cmd, m_Connection); + reader = ExecuteReader(cmd, m_Connection); + } int perms = 0; @@ -192,13 +198,14 @@ namespace OpenSim.Data.SQLite public bool MoveFolder(string id, string newParentFolderID) { - SqliteCommand cmd = new SqliteCommand(); + using (SqliteCommand cmd = new SqliteCommand()) + { + cmd.CommandText = String.Format("update {0} set parentFolderID = :ParentFolderID where folderID = :FolderID", m_Realm); + cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParentFolderID)); + cmd.Parameters.Add(new SqliteParameter(":FolderID", id)); - cmd.CommandText = String.Format("update {0} set parentFolderID = :ParentFolderID where folderID = :FolderID", m_Realm); - cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParentFolderID)); - cmd.Parameters.Add(new SqliteParameter(":FolderID", id)); - - return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true; + return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true; + } } } } \ No newline at end of file