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.
0.7.4-extended
Justin Clark-Casey (justincc) 2012-11-14 04:45:59 +00:00
parent a83218fd08
commit 4fe042aa7f
9 changed files with 321 additions and 314 deletions

View File

@ -202,7 +202,8 @@ namespace OpenSim.Data.SQLite
/// <returns>True if exist, or false.</returns> /// <returns>True if exist, or false.</returns>
override public bool ExistsAsset(UUID uuid) override public bool ExistsAsset(UUID uuid)
{ {
lock (this) { lock (this)
{
using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn)) using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn))
{ {
cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString()));
@ -353,12 +354,13 @@ namespace OpenSim.Data.SQLite
{ {
lock (this) lock (this)
{ {
using (SqliteCommand cmd = new SqliteCommand(DeleteAssetSQL, m_conn)) using (SqliteCommand cmd = new SqliteCommand(DeleteAssetSQL, m_conn))
{ {
cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString()));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
} }
return true; return true;
} }

View File

@ -82,11 +82,14 @@ namespace OpenSim.Data.SQLite
{ {
AuthenticationData ret = new AuthenticationData(); AuthenticationData ret = new AuthenticationData();
ret.Data = new Dictionary<string, object>(); ret.Data = new Dictionary<string, object>();
IDataReader result;
SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = :PrincipalID"); using (SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = :PrincipalID"))
cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); {
cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString()));
IDataReader result = ExecuteReader(cmd, m_Connection); result = ExecuteReader(cmd, m_Connection);
}
try try
{ {
@ -121,10 +124,6 @@ namespace OpenSim.Data.SQLite
catch catch
{ {
} }
finally
{
//CloseCommand(cmd);
}
return null; return null;
} }
@ -140,84 +139,81 @@ namespace OpenSim.Data.SQLite
foreach (object o in data.Data.Values) foreach (object o in data.Data.Values)
values[i++] = o.ToString(); values[i++] = o.ToString();
SqliteCommand cmd = new SqliteCommand(); using (SqliteCommand cmd = new SqliteCommand())
if (Get(data.PrincipalID) != null)
{ {
if (Get(data.PrincipalID) != null)
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"; string update = "update `" + m_Realm + "` set ";
cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); bool first = true;
foreach (string field in fields)
cmd.CommandText = update;
try
{
if (ExecuteNonQuery(cmd, m_Connection) < 1)
{ {
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); //CloseCommand(cmd);
return false; return false;
} }
} }
catch (Exception e) else
{ {
m_log.Error("[SQLITE]: Exception storing authentication data", e); string insert = "insert into `" + m_Realm + "` (`UUID`, `" +
//CloseCommand(cmd); String.Join("`, `", fields) +
return false; "`) values (:UUID, :" + String.Join(", :", fields) + ")";
}
}
else cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString()));
{ foreach (string field in fields)
string insert = "insert into `" + m_Realm + "` (`UUID`, `" + cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field]));
String.Join("`, `", fields) +
"`) values (:UUID, :" + String.Join(", :", fields) + ")";
cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); cmd.CommandText = insert;
foreach (string field in fields)
cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field]));
cmd.CommandText = insert; try
try
{
if (ExecuteNonQuery(cmd, m_Connection) < 1)
{ {
//CloseCommand(cmd); if (ExecuteNonQuery(cmd, m_Connection) < 1)
{
return false;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return false; return false;
} }
} }
catch (Exception e)
{
Console.WriteLine(e.ToString());
//CloseCommand(cmd);
return false;
}
} }
//CloseCommand(cmd);
return true; return true;
} }
public bool SetDataItem(UUID principalID, string item, string value) public bool SetDataItem(UUID principalID, string item, string value)
{ {
SqliteCommand cmd = new SqliteCommand("update `" + m_Realm + using (SqliteCommand cmd = new SqliteCommand("update `" + m_Realm +
"` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'"); "` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'"))
{
if (ExecuteNonQuery(cmd, m_Connection) > 0) if (ExecuteNonQuery(cmd, m_Connection) > 0)
return true; return true;
}
return false; return false;
} }
@ -227,16 +223,13 @@ namespace OpenSim.Data.SQLite
if (System.Environment.TickCount - m_LastExpire > 30000) if (System.Environment.TickCount - m_LastExpire > 30000)
DoExpire(); DoExpire();
SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() + using (SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() +
"', '" + token + "', datetime('now', 'localtime', '+" + lifetime.ToString() + " minutes'))"); "', '" + token + "', datetime('now', 'localtime', '+" + lifetime.ToString() + " minutes'))"))
if (ExecuteNonQuery(cmd, m_Connection) > 0)
{ {
cmd.Dispose(); if (ExecuteNonQuery(cmd, m_Connection) > 0)
return true; return true;
} }
cmd.Dispose();
return false; return false;
} }
@ -245,26 +238,20 @@ namespace OpenSim.Data.SQLite
if (System.Environment.TickCount - m_LastExpire > 30000) if (System.Environment.TickCount - m_LastExpire > 30000)
DoExpire(); DoExpire();
SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now', 'localtime', '+" + lifetime.ToString() + 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')"); " minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')"))
if (ExecuteNonQuery(cmd, m_Connection) > 0)
{ {
cmd.Dispose(); if (ExecuteNonQuery(cmd, m_Connection) > 0)
return true; return true;
} }
cmd.Dispose();
return false; return false;
} }
private void DoExpire() private void DoExpire()
{ {
SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now', 'localtime')"); using (SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now', 'localtime')"))
ExecuteNonQuery(cmd, m_Connection); ExecuteNonQuery(cmd, m_Connection);
cmd.Dispose();
m_LastExpire = System.Environment.TickCount; m_LastExpire = System.Environment.TickCount;
} }

View File

@ -56,23 +56,17 @@ namespace OpenSim.Data.SQLite
public bool Delete(UUID principalID, string name) public bool Delete(UUID principalID, string name)
{ {
SqliteCommand cmd = new SqliteCommand(); 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);
try
{ {
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) if (ExecuteNonQuery(cmd, m_Connection) > 0)
return true; return true;
}
return false; return false;
}
finally
{
//CloseCommand(cmd);
}
} }
} }
} }

View File

@ -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"; 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; return DoLoad(cmd, regionID, create);
cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); }
return DoLoad(cmd, regionID, create);
} }
private EstateSettings DoLoad(SqliteCommand cmd, UUID regionID, bool create) private EstateSettings DoLoad(SqliteCommand cmd, UUID regionID, bool create)
@ -186,38 +187,40 @@ namespace OpenSim.Data.SQLite
{ {
List<string> names = new List<string>(FieldList); List<string> names = new List<string>(FieldList);
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
IDataReader r = null; IDataReader r = null;
names.Remove("EstateID"); using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")";
cmd.CommandText = sql;
cmd.Parameters.Clear();
foreach (string name in FieldList)
{ {
if (m_FieldMap[name].GetValue(es) is bool) names.Remove("EstateID");
string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")";
cmd.CommandText = sql;
cmd.Parameters.Clear();
foreach (string name in FieldList)
{ {
if ((bool)m_FieldMap[name].GetValue(es)) if (m_FieldMap[name].GetValue(es) is bool)
cmd.Parameters.AddWithValue(":"+name, "1"); {
if ((bool)m_FieldMap[name].GetValue(es))
cmd.Parameters.AddWithValue(":"+name, "1");
else
cmd.Parameters.AddWithValue(":"+name, "0");
}
else else
cmd.Parameters.AddWithValue(":"+name, "0"); {
} cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString());
else }
{
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(); r.Read();
es.EstateID = Convert.ToUInt32(r["id"]); 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"; string sql = "update estate_settings set "+String.Join(", ", terms.ToArray())+" where EstateID = :EstateID";
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
cmd.CommandText = sql;
foreach (string name in FieldList)
{ {
if (m_FieldMap[name].GetValue(es) is bool) cmd.CommandText = sql;
{
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(); 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); SaveBanList(es);
SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers); SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers);
@ -270,12 +274,15 @@ namespace OpenSim.Data.SQLite
{ {
es.ClearBans(); es.ClearBans();
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); IDataReader r;
cmd.CommandText = "select bannedUUID from estateban where EstateID = :EstateID"; using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
cmd.Parameters.AddWithValue(":EstateID", es.EstateID); {
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()) while (r.Read())
{ {
@ -294,60 +301,64 @@ namespace OpenSim.Data.SQLite
private void SaveBanList(EstateSettings es) private void SaveBanList(EstateSettings es)
{ {
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); using (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)
{ {
cmd.CommandText = "delete from estateban where EstateID = :EstateID";
cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString()); cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString());
cmd.Parameters.AddWithValue(":bannedUUID", b.BannedUserID.ToString());
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
cmd.Parameters.Clear(); 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) void SaveUUIDList(uint EstateID, string table, UUID[] data)
{ {
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); using (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)
{ {
cmd.CommandText = "delete from "+table+" where EstateID = :EstateID";
cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString()); cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString());
cmd.Parameters.AddWithValue(":uuid", uuid.ToString());
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
cmd.Parameters.Clear(); 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) UUID[] LoadUUIDList(uint EstateID, string table)
{ {
List<UUID> uuids = new List<UUID>(); List<UUID> uuids = new List<UUID>();
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"; r = cmd.ExecuteReader();
cmd.Parameters.AddWithValue(":EstateID", EstateID); }
IDataReader r = cmd.ExecuteReader();
while (r.Read()) 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"; 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; return DoLoad(cmd, UUID.Zero, false);
cmd.Parameters.AddWithValue(":EstateID", estateID.ToString()); }
return DoLoad(cmd, UUID.Zero, false);
} }
public List<EstateSettings> LoadEstateSettingsAll() public List<EstateSettings> LoadEstateSettingsAll()
@ -391,13 +403,15 @@ namespace OpenSim.Data.SQLite
List<int> result = new List<int>(); List<int> result = new List<int>();
string sql = "select EstateID from estate_settings where estate_settings.EstateName = :EstateName"; 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; r = cmd.ExecuteReader();
cmd.Parameters.AddWithValue(":EstateName", search); }
IDataReader r = cmd.ExecuteReader();
while (r.Read()) while (r.Read())
{ {
@ -413,12 +427,14 @@ namespace OpenSim.Data.SQLite
List<int> result = new List<int>(); List<int> result = new List<int>();
string sql = "select EstateID from estate_settings"; 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; r = cmd.ExecuteReader();
}
IDataReader r = cmd.ExecuteReader();
while (r.Read()) while (r.Read())
{ {
@ -434,13 +450,15 @@ namespace OpenSim.Data.SQLite
List<int> result = new List<int>(); List<int> result = new List<int>();
string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner"; 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; r = cmd.ExecuteReader();
cmd.Parameters.AddWithValue(":EstateOwner", ownerID); }
IDataReader r = cmd.ExecuteReader();
while (r.Read()) while (r.Read())
{ {

View File

@ -90,12 +90,5 @@ namespace OpenSim.Data.SQLite
return cmd.ExecuteReader(); return cmd.ExecuteReader();
} }
} }
protected void CloseCommand(SqliteCommand cmd)
{
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
}
} }
} }

View File

@ -53,13 +53,13 @@ namespace OpenSim.Data.SQLite
public FriendsData[] GetFriends(string userID) public FriendsData[] GetFriends(string userID)
{ {
SqliteCommand cmd = new SqliteCommand(); 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.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()); cmd.Parameters.AddWithValue(":PrincipalID", userID.ToString());
return DoQuery(cmd);
return DoQuery(cmd);
}
} }
public bool Delete(UUID principalID, string friend) public bool Delete(UUID principalID, string friend)
@ -69,13 +69,14 @@ namespace OpenSim.Data.SQLite
public bool Delete(string principalID, string friend) 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); ExecuteNonQuery(cmd, m_Connection);
cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString()); }
cmd.Parameters.AddWithValue(":Friend", friend);
ExecuteNonQuery(cmd, m_Connection);
return true; return true;
} }

View File

@ -132,22 +132,23 @@ namespace OpenSim.Data.SQLite
List<string> terms = new List<string>(); List<string> terms = new List<string>();
SqliteCommand cmd = new SqliteCommand(); using (SqliteCommand cmd = new SqliteCommand())
for (int i = 0 ; i < fields.Length ; i++)
{ {
cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); for (int i = 0 ; i < fields.Length ; i++)
terms.Add("`" + fields[i] + "` = :" + fields[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) protected T[] DoQuery(SqliteCommand cmd)
@ -214,51 +215,53 @@ namespace OpenSim.Data.SQLite
public T[] Get(string where) 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}", cmd.CommandText = query;
m_Realm, where);
cmd.CommandText = query; return DoQuery(cmd);
}
return DoQuery(cmd);
} }
public bool Store(T row) public bool Store(T row)
{ {
SqliteCommand cmd = new SqliteCommand(); using (SqliteCommand cmd = new SqliteCommand())
string query = "";
List<String> names = new List<String>();
List<String> values = new List<String>();
foreach (FieldInfo fi in m_Fields.Values)
{ {
names.Add(fi.Name); string query = "";
values.Add(":" + fi.Name); List<String> names = new List<String>();
cmd.Parameters.Add(new SqliteParameter(":" + fi.Name, fi.GetValue(row).ToString())); List<String> values = new List<String>();
}
if (m_DataField != null) foreach (FieldInfo fi in m_Fields.Values)
{
Dictionary<string, string> data =
(Dictionary<string, string>)m_DataField.GetValue(row);
foreach (KeyValuePair<string, string> kvp in data)
{ {
names.Add(kvp.Key); names.Add(fi.Name);
values.Add(":" + kvp.Key); values.Add(":" + fi.Name);
cmd.Parameters.Add(new SqliteParameter(":" + kvp.Key, kvp.Value)); cmd.Parameters.Add(new SqliteParameter(":" + fi.Name, fi.GetValue(row).ToString()));
} }
if (m_DataField != null)
{
Dictionary<string, string> data =
(Dictionary<string, string>)m_DataField.GetValue(row);
foreach (KeyValuePair<string, string> 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; return false;
} }
@ -274,21 +277,22 @@ namespace OpenSim.Data.SQLite
List<string> terms = new List<string>(); List<string> terms = new List<string>();
SqliteCommand cmd = new SqliteCommand(); using (SqliteCommand cmd = new SqliteCommand())
for (int i = 0 ; i < fields.Length ; i++)
{ {
cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); for (int i = 0 ; i < fields.Length ; i++)
terms.Add("`" + fields[i] + "` = :" + fields[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;
} }
} }
} }

View File

@ -66,20 +66,21 @@ namespace OpenSim.Data.SQLite
if (words.Length > 2) if (words.Length > 2)
return new UserAccountData[0]; return new UserAccountData[0];
SqliteCommand cmd = new SqliteCommand(); using (SqliteCommand cmd = new SqliteCommand())
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}%')", if (words.Length == 1)
m_Realm, scopeID.ToString(), words[0]); {
} 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}%')",
else m_Realm, scopeID.ToString(), words[0]);
{ }
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}%')", else
m_Realm, scopeID.ToString(), words[0], words[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 '{3}%')",
m_Realm, scopeID.ToString(), words[0], words[1]);
}
return DoQuery(cmd); return DoQuery(cmd);
}
} }
} }
} }

View File

@ -139,35 +139,41 @@ namespace OpenSim.Data.SQLite
public bool MoveItem(string id, string newParent) 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); return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true;
cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParent)); }
cmd.Parameters.Add(new SqliteParameter(":InventoryID", id));
return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true;
} }
public XInventoryItem[] GetActiveGestures(UUID principalID) public XInventoryItem[] GetActiveGestures(UUID principalID)
{ {
SqliteCommand cmd = new SqliteCommand(); using (SqliteCommand cmd = new SqliteCommand())
cmd.CommandText = String.Format("select * from inventoryitems where avatarId = :uuid and assetType = :type and flags = 1", m_Realm); {
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(":uuid", principalID.ToString()));
cmd.Parameters.Add(new SqliteParameter(":type", (int)AssetType.Gesture)); cmd.Parameters.Add(new SqliteParameter(":type", (int)AssetType.Gesture));
return DoQuery(cmd); return DoQuery(cmd);
}
} }
public int GetAssetPermissions(UUID principalID, UUID assetID) 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); using (SqliteCommand cmd = new SqliteCommand())
cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); {
cmd.Parameters.Add(new SqliteParameter(":AssetID", assetID.ToString())); 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; int perms = 0;
@ -192,13 +198,14 @@ namespace OpenSim.Data.SQLite
public bool MoveFolder(string id, string newParentFolderID) 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); return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true;
cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParentFolderID)); }
cmd.Parameters.Add(new SqliteParameter(":FolderID", id));
return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true;
} }
} }
} }