From 4880bd121e737e0a5c384fddf61bd220c77ef88a Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Wed, 13 Feb 2008 13:39:51 +0000 Subject: * Split out MSSQLManager Test/Init into each provider. * Made regions table name configurable (MSSQL only) * Added a note in ini.example pointing out that the sql resources have to change if you change table names * Removed duplicate picker method from GridData interface [Provided by openlifegrid.com] --- OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs | 127 ++++++++------------------ 1 file changed, 36 insertions(+), 91 deletions(-) (limited to 'OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs') diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs index 28eec3e..0df88b6 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs @@ -47,21 +47,48 @@ namespace OpenSim.Framework.Data.MSSQL /// private MSSQLManager database; + private string m_regionsTableName; + /// /// Initialises the Grid Interface /// public void Initialise() { - IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini"); - string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source"); - string settingInitialCatalog = GridDataMySqlFile.ParseFileReadValue("initial_catalog"); - string settingPersistSecurityInfo = GridDataMySqlFile.ParseFileReadValue("persist_security_info"); - string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); - string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); + IniFile iniFile = new IniFile("mssql_connection.ini"); + + string settingDataSource = iniFile.ParseFileReadValue("data_source"); + string settingInitialCatalog = iniFile.ParseFileReadValue("initial_catalog"); + string settingPersistSecurityInfo = iniFile.ParseFileReadValue("persist_security_info"); + string settingUserId = iniFile.ParseFileReadValue("user_id"); + string settingPassword = iniFile.ParseFileReadValue("password"); + + m_regionsTableName = iniFile.ParseFileReadValue("regionstablename"); + if (m_regionsTableName == null) + { + m_regionsTableName = "regions"; + } database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); + + TestTables(); + } + + private void TestTables() + { + IDbCommand cmd = database.Query("SELECT * FROM "+m_regionsTableName, new Dictionary()); + + try + { + cmd.ExecuteNonQuery(); + cmd.Dispose(); + } + catch (Exception) + { + m_log.Info("[DATASTORE]: MSSQL Database doesn't exist... creating"); + database.ExecuteResourceSql("Mssql-regions.sql"); + } } /// @@ -115,7 +142,7 @@ namespace OpenSim.Framework.Data.MSSQL { Dictionary param = new Dictionary(); param["handle"] = handle.ToString(); - IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = @handle", param); + IDbCommand result = database.Query("SELECT * FROM " + m_regionsTableName + " WHERE regionHandle = @handle", param); reader = result.ExecuteReader(); RegionProfileData row = database.getRegionRow(reader); @@ -134,89 +161,7 @@ namespace OpenSim.Framework.Data.MSSQL return null; } - /// - /// // Returns a list of avatar and UUIDs that match the query - /// - public List GeneratePickerResults(LLUUID queryID, string query) - { - List returnlist = new List(); - string[] querysplit; - querysplit = query.Split(' '); - if (querysplit.Length == 2) - { - try - { - lock (database) - { - Dictionary param = new Dictionary(); - param["first"] = querysplit[0]; - param["second"] = querysplit[1]; - - IDbCommand result = - database.Query( - "SELECT UUID,username,surname FROM users WHERE username = @first AND lastname = @second", - param); - IDataReader reader = result.ExecuteReader(); - - - while (reader.Read()) - { - AvatarPickerAvatar user = new AvatarPickerAvatar(); - user.AvatarID = new LLUUID((string) reader["UUID"]); - user.firstName = (string) reader["username"]; - user.lastName = (string) reader["surname"]; - returnlist.Add(user); - } - reader.Close(); - result.Dispose(); - } - } - catch (Exception e) - { - database.Reconnect(); - m_log.Error(e.ToString()); - return returnlist; - } - } - else if (querysplit.Length == 1) - { - try - { - lock (database) - { - Dictionary param = new Dictionary(); - param["first"] = querysplit[0]; - param["second"] = querysplit[1]; - - IDbCommand result = - database.Query( - "SELECT UUID,username,surname FROM users WHERE username = @first OR lastname = @second", - param); - IDataReader reader = result.ExecuteReader(); - - - while (reader.Read()) - { - AvatarPickerAvatar user = new AvatarPickerAvatar(); - user.AvatarID = new LLUUID((string) reader["UUID"]); - user.firstName = (string) reader["username"]; - user.lastName = (string) reader["surname"]; - returnlist.Add(user); - } - reader.Close(); - result.Dispose(); - } - } - catch (Exception e) - { - database.Reconnect(); - m_log.Error(e.ToString()); - return returnlist; - } - } - return returnlist; - } - + /// /// Returns a sim profile from it's UUID /// @@ -226,7 +171,7 @@ namespace OpenSim.Framework.Data.MSSQL { Dictionary param = new Dictionary(); param["uuid"] = uuid.ToString(); - IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); + IDbCommand result = database.Query("SELECT * FROM " + m_regionsTableName + " WHERE uuid = @uuid", param); IDataReader reader = result.ExecuteReader(); RegionProfileData row = database.getRegionRow(reader); -- cgit v1.1