Ejemplo n.º 1
0
 static SQLiteConvert()
 {
     SQLiteConvert.FallbackDefaultTypeName = string.Empty;
     SQLiteConvert.UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
     SQLiteConvert.OleAutomationEpochAsJulianDay = 2415018.5;
     SQLiteConvert.MinimumJd = SQLiteConvert.computeJD(DateTime.MinValue);
     SQLiteConvert.MaximumJd = SQLiteConvert.computeJD(DateTime.MaxValue);
     string[] strArrays = new string[] { "THHmmssK", "THHmmK", "HH:mm:ss.FFFFFFFK", "HH:mm:ssK", "HH:mmK", "yyyy-MM-dd HH:mm:ss.FFFFFFFK", "yyyy-MM-dd HH:mm:ssK", "yyyy-MM-dd HH:mmK", "yyyy-MM-ddTHH:mm:ss.FFFFFFFK", "yyyy-MM-ddTHH:mmK", "yyyy-MM-ddTHH:mm:ssK", "yyyyMMddHHmmssK", "yyyyMMddHHmmK", "yyyyMMddTHHmmssFFFFFFFK", "THHmmss", "THHmm", "HH:mm:ss.FFFFFFF", "HH:mm:ss", "HH:mm", "yyyy-MM-dd HH:mm:ss.FFFFFFF", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-ddTHH:mm:ss.FFFFFFF", "yyyy-MM-ddTHH:mm", "yyyy-MM-ddTHH:mm:ss", "yyyyMMddHHmmss", "yyyyMMddHHmm", "yyyyMMddTHHmmssFFFFFFF", "yyyy-MM-dd", "yyyyMMdd", "yy-MM-dd" };
     SQLiteConvert._datetimeFormats     = strArrays;
     SQLiteConvert._datetimeFormatUtc   = SQLiteConvert._datetimeFormats[5];
     SQLiteConvert._datetimeFormatLocal = SQLiteConvert._datetimeFormats[19];
     SQLiteConvert._utf8 = new UTF8Encoding();
     Type[] typeArray = new Type[] { typeof(object), typeof(long), typeof(double), typeof(string), typeof(byte[]), typeof(object), typeof(DateTime), typeof(object) };
     SQLiteConvert._affinitytotype = typeArray;
     DbType[] dbTypeArray = new DbType[] { DbType.Object, DbType.Binary, DbType.Object, DbType.Boolean, DbType.SByte, DbType.SByte, DbType.Byte, DbType.Int16, DbType.UInt16, DbType.Int32, DbType.UInt32, DbType.Int64, DbType.UInt64, DbType.Single, DbType.Double, DbType.Decimal, DbType.DateTime, DbType.Object, DbType.String };
     SQLiteConvert._typetodbtype       = dbTypeArray;
     SQLiteConvert._dbtypetocolumnsize = new int[] { 2147483647, 2147483647, 1, 1, 8, 8, 8, 8, 8, 16, 2, 4, 8, 2147483647, 1, 4, 2147483647, 8, 2, 4, 8, 8, 2147483647, 2147483647, 2147483647, 2147483647 };
     object[] value = new object[] { DBNull.Value, DBNull.Value, 3, DBNull.Value, 19, DBNull.Value, DBNull.Value, 53, 53, DBNull.Value, 5, 10, 19, DBNull.Value, 3, 24, DBNull.Value, DBNull.Value, 5, 10, 19, 53, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value };
     SQLiteConvert._dbtypetonumericprecision = value;
     object[] objArray = new object[] { DBNull.Value, DBNull.Value, 0, DBNull.Value, 4, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, 0, 0, 0, DBNull.Value, 0, DBNull.Value, DBNull.Value, DBNull.Value, 0, 0, 0, 0, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value };
     SQLiteConvert._dbtypetonumericscale = objArray;
     Type[] typeArray1 = new Type[] { typeof(string), typeof(byte[]), typeof(byte), typeof(bool), typeof(decimal), typeof(DateTime), typeof(DateTime), typeof(decimal), typeof(double), typeof(Guid), typeof(short), typeof(int), typeof(long), typeof(object), typeof(sbyte), typeof(float), typeof(string), typeof(DateTime), typeof(ushort), typeof(uint), typeof(ulong), typeof(double), typeof(string), typeof(string), typeof(string), typeof(string) };
     SQLiteConvert._dbtypeToType = typeArray1;
     TypeAffinity[] typeAffinityArray = new TypeAffinity[] { TypeAffinity.Null, TypeAffinity.Blob, TypeAffinity.Null, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Int64, TypeAffinity.Double, TypeAffinity.Double, TypeAffinity.Double, TypeAffinity.DateTime, TypeAffinity.Null, TypeAffinity.Text };
     SQLiteConvert._typecodeAffinities = typeAffinityArray;
     SQLiteConvert._syncRoot           = new object();
     SQLiteConvert._typeNames          = null;
 }
Ejemplo n.º 2
0
        internal static string DbTypeToTypeName(SQLiteConnection connection, DbType dbType, SQLiteConnectionFlags flags)
        {
            SQLiteDbTypeMapping sQLiteDbTypeMapping;
            SQLiteDbTypeMapping sQLiteDbTypeMapping1;
            string str;
            string defaultTypeName = null;

            if (connection != null)
            {
                flags |= connection.Flags;
                if ((flags & SQLiteConnectionFlags.UseConnectionTypes) == SQLiteConnectionFlags.UseConnectionTypes)
                {
                    SQLiteDbTypeMap sQLiteDbTypeMap = connection._typeNames;
                    if (sQLiteDbTypeMap != null && sQLiteDbTypeMap.TryGetValue(dbType, out sQLiteDbTypeMapping))
                    {
                        return(sQLiteDbTypeMapping.typeName);
                    }
                }
                defaultTypeName = connection.DefaultTypeName;
            }
            if ((flags & SQLiteConnectionFlags.NoGlobalTypes) == SQLiteConnectionFlags.NoGlobalTypes)
            {
                if (defaultTypeName != null)
                {
                    return(defaultTypeName);
                }
                defaultTypeName = SQLiteConvert.GetDefaultTypeName(connection);
                SQLiteConvert.DefaultTypeNameWarning(dbType, flags, defaultTypeName);
                return(defaultTypeName);
            }
            lock (SQLiteConvert._syncRoot)
            {
                if (SQLiteConvert._typeNames == null)
                {
                    SQLiteConvert._typeNames = SQLiteConvert.GetSQLiteDbTypeMap();
                }
                if (!SQLiteConvert._typeNames.TryGetValue(dbType, out sQLiteDbTypeMapping1))
                {
                    if (defaultTypeName != null)
                    {
                        return(defaultTypeName);
                    }
                    defaultTypeName = SQLiteConvert.GetDefaultTypeName(connection);
                    SQLiteConvert.DefaultTypeNameWarning(dbType, flags, defaultTypeName);
                    return(defaultTypeName);
                }
                else
                {
                    str = sQLiteDbTypeMapping1.typeName;
                }
            }
            return(str);
        }
Ejemplo n.º 3
0
        internal static DbType TypeNameToDbType(SQLiteConnection connection, string typeName, SQLiteConnectionFlags flags)
        {
            SQLiteDbTypeMapping sQLiteDbTypeMapping;
            SQLiteDbTypeMapping sQLiteDbTypeMapping1;
            DbType dbType;
            DbType?defaultDbType = null;

            if (connection != null)
            {
                flags |= connection.Flags;
                if ((flags & SQLiteConnectionFlags.UseConnectionTypes) == SQLiteConnectionFlags.UseConnectionTypes)
                {
                    SQLiteDbTypeMap sQLiteDbTypeMap = connection._typeNames;
                    if (sQLiteDbTypeMap != null && typeName != null)
                    {
                        if (sQLiteDbTypeMap.TryGetValue(typeName, out sQLiteDbTypeMapping))
                        {
                            return(sQLiteDbTypeMapping.dataType);
                        }
                        int num = typeName.IndexOf('(');
                        if (num > 0 && sQLiteDbTypeMap.TryGetValue(typeName.Substring(0, num).TrimEnd(new char[0]), out sQLiteDbTypeMapping))
                        {
                            return(sQLiteDbTypeMapping.dataType);
                        }
                    }
                }
                defaultDbType = connection.DefaultDbType;
            }
            if ((flags & SQLiteConnectionFlags.NoGlobalTypes) == SQLiteConnectionFlags.NoGlobalTypes)
            {
                if (defaultDbType.HasValue)
                {
                    return(defaultDbType.Value);
                }
                defaultDbType = new DbType?(SQLiteConvert.GetDefaultDbType(connection));
                SQLiteConvert.DefaultDbTypeWarning(typeName, flags, defaultDbType);
                return(defaultDbType.Value);
            }
            lock (SQLiteConvert._syncRoot)
            {
                if (SQLiteConvert._typeNames == null)
                {
                    SQLiteConvert._typeNames = SQLiteConvert.GetSQLiteDbTypeMap();
                }
                if (typeName != null)
                {
                    if (!SQLiteConvert._typeNames.TryGetValue(typeName, out sQLiteDbTypeMapping1))
                    {
                        int num1 = typeName.IndexOf('(');
                        if (num1 > 0 && SQLiteConvert._typeNames.TryGetValue(typeName.Substring(0, num1).TrimEnd(new char[0]), out sQLiteDbTypeMapping1))
                        {
                            dbType = sQLiteDbTypeMapping1.dataType;
                            return(dbType);
                        }
                    }
                    else
                    {
                        dbType = sQLiteDbTypeMapping1.dataType;
                        return(dbType);
                    }
                }
                if (defaultDbType.HasValue)
                {
                    return(defaultDbType.Value);
                }
                defaultDbType = new DbType?(SQLiteConvert.GetDefaultDbType(connection));
                SQLiteConvert.DefaultDbTypeWarning(typeName, flags, defaultDbType);
                return(defaultDbType.Value);
            }
            return(dbType);
        }