* Reworked Data Framework so that MSSQL works

* Introduced uint as field type
* Removed what should be superfluous Guid handling
* Introduced stub MySQLDataReader if we need to fix the Guid handling anyway
0.6.0-stable
lbsa71 2008-04-02 13:06:18 +00:00
parent 0e789a9a01
commit 667ebc8ea2
6 changed files with 61 additions and 14 deletions

View File

@ -31,7 +31,7 @@ using System.IO;
namespace OpenSim.Framework.Data.Base namespace OpenSim.Framework.Data.Base
{ {
public class BaseDataReader public abstract class BaseDataReader
{ {
private readonly IDataReader m_source; private readonly IDataReader m_source;
@ -112,17 +112,28 @@ namespace OpenSim.Framework.Data.Base
return m_source.Read(); return m_source.Read();
} }
public Guid GetGuid(string name) public virtual Guid GetGuid(string name)
{ {
string guidString = GetString(name); return m_source.GetGuid(m_source.GetOrdinal(name));
if (String.IsNullOrEmpty(guidString))
{
return Guid.Empty;
} }
else
public UInt32 GetUInt32(string name )
{ {
return new Guid(guidString); return (UInt32)GetInt32(name);
} }
private Int32 GetInt32(string name)
{
int ordinal = m_source.GetOrdinal(name);
int int32 = m_source.GetInt32(ordinal);
return int32;
}
public Int64 GetInt64(string name)
{
int ordinal = m_source.GetOrdinal( name );
long int64 = m_source.GetInt64(ordinal);
return int64;
} }
} }
} }

View File

@ -108,6 +108,10 @@ namespace OpenSim.Framework.Data.Base
{ {
value = reader.GetUShort(m_fieldName); value = reader.GetUShort(m_fieldName);
} }
else if (ValueType == typeof(uint))
{
value = reader.GetUInt32(m_fieldName);
}
else if (ValueType == typeof(byte[])) else if (ValueType == typeof(byte[]))
{ {
value = reader.GetBytes(m_fieldName); value = reader.GetBytes(m_fieldName);

View File

@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System;
using System.Data.Common; using System.Data.Common;
using System.Data.SqlClient; using System.Data.SqlClient;
using OpenSim.Framework.Data; using OpenSim.Framework.Data;
@ -44,6 +45,18 @@ namespace OpenSim.Framework.Data.MSSQLMapper
return connection; return connection;
} }
public override object ConvertToDbType(object value)
{
if( value is UInt32 )
{
UInt32 tmpVal = (UInt32) value;
Int64 result = Convert.ToInt64(tmpVal);
return result;
}
return base.ConvertToDbType(value);
}
public override string CreateParamName(string fieldName) public override string CreateParamName(string fieldName)
{ {
return "@" + fieldName; return "@" + fieldName;

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using OpenSim.Framework.Data.Base;
namespace OpenSim.Framework.Data.MySQLMapper
{
public class MySQLDataReader : OpenSimDataReader
{
public MySQLDataReader(IDataReader source) : base(source)
{
}
}
}

View File

@ -25,9 +25,11 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System.Data;
using System.Data.Common; using System.Data.Common;
using MySql.Data.MySqlClient; using MySql.Data.MySqlClient;
using OpenSim.Framework.Data; using OpenSim.Framework.Data;
using OpenSim.Framework.Data.Base;
namespace OpenSim.Framework.Data.MySQLMapper namespace OpenSim.Framework.Data.MySQLMapper
{ {
@ -48,5 +50,10 @@ namespace OpenSim.Framework.Data.MySQLMapper
{ {
return "?" + fieldName; return "?" + fieldName;
} }
public override BaseDataReader CreateReader(IDataReader reader)
{
return new MySQLDataReader( reader );
}
} }
} }

View File

@ -26,11 +26,8 @@
*/ */
using System; using System;
using System.Collections.Generic;
using System.Data; using System.Data;
using System.Text;
using libsecondlife; using libsecondlife;
using OpenSim.Framework.Data.Base; using OpenSim.Framework.Data.Base;
namespace OpenSim.Framework.Data namespace OpenSim.Framework.Data