* 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
{
public class BaseDataReader
public abstract class BaseDataReader
{
private readonly IDataReader m_source;
@ -112,17 +112,28 @@ namespace OpenSim.Framework.Data.Base
return m_source.Read();
}
public Guid GetGuid(string name)
public virtual Guid GetGuid(string name)
{
string guidString = GetString(name);
if (String.IsNullOrEmpty(guidString))
{
return Guid.Empty;
}
else
{
return new Guid(guidString);
}
return m_source.GetGuid(m_source.GetOrdinal(name));
}
public UInt32 GetUInt32(string name )
{
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);
}
else if (ValueType == typeof(uint))
{
value = reader.GetUInt32(m_fieldName);
}
else if (ValueType == typeof(byte[]))
{
value = reader.GetBytes(m_fieldName);

View File

@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Data.Common;
using System.Data.SqlClient;
using OpenSim.Framework.Data;
@ -44,6 +45,18 @@ namespace OpenSim.Framework.Data.MSSQLMapper
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)
{
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.
*/
using System.Data;
using System.Data.Common;
using MySql.Data.MySqlClient;
using OpenSim.Framework.Data;
using OpenSim.Framework.Data.Base;
namespace OpenSim.Framework.Data.MySQLMapper
{
@ -48,5 +50,10 @@ namespace OpenSim.Framework.Data.MySQLMapper
{
return "?" + fieldName;
}
public override BaseDataReader CreateReader(IDataReader reader)
{
return new MySQLDataReader( reader );
}
}
}

View File

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