Пример #1
0
        /// <summary>
        /// Like
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        private static void Like(MethodCallExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Object != null)
            {
                SqlExpressionProvider.Where(expression.Object, sqlWrapper);
            }
            SqlExpressionProvider.Where(expression.Arguments[0], sqlWrapper);
            switch (sqlWrapper.DatabaseType)
            {
            case DatabaseType.SqlServer:
                sqlWrapper += " LIKE '%' + ";
                break;

            case DatabaseType.MySql:
            case DatabaseType.PostgreSql:
                sqlWrapper += " LIKE CONCAT('%',";
                break;

            case DatabaseType.Oracle:
            case DatabaseType.Sqlite:
                sqlWrapper += " LIKE '%' || ";
                break;

            default:
                break;
            }
            SqlExpressionProvider.Where(expression.Arguments[1], sqlWrapper);
            switch (sqlWrapper.DatabaseType)
            {
            case DatabaseType.SqlServer:
                sqlWrapper += " + '%'";
                break;

            case DatabaseType.MySql:
            case DatabaseType.PostgreSql:
                sqlWrapper += ",'%')";
                break;

            case DatabaseType.Oracle:
            case DatabaseType.Sqlite:
                sqlWrapper += " || '%'";
                break;

            default:
                break;
            }
        }
Пример #2
0
        /// <summary>
        /// Trim
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        private static void Trim(MethodCallExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Object != null)
            {
                if (expression.Arguments?.Count > 0)
                {
                    var trimString = expression.Object.ToObject()?.ToString();
                    if (!trimString.IsNullOrEmpty())
                    {
                        string constant;
                        var    argument = expression.Arguments[0].ToObject();
                        if (argument is char @char)
                        {
                            constant = trimString.Trim(@char);
                        }
                        else
                        {
                            constant = trimString.Trim((char[])argument);
                        }

                        SqlExpressionProvider.Where(Expression.Constant(constant), sqlWrapper);
                    }
                }
                else
                {
                    if (sqlWrapper.DatabaseType == DatabaseType.SqlServer)
                    {
                        sqlWrapper += "LTRIM(RTRIM(";
                    }
                    else
                    {
                        sqlWrapper += "TRIM(";
                    }

                    SqlExpressionProvider.Where(expression.Object, sqlWrapper);

                    if (sqlWrapper.DatabaseType == DatabaseType.SqlServer)
                    {
                        sqlWrapper += "))";
                    }
                    else
                    {
                        sqlWrapper += ")";
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Insert
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Insert(MemberInitExpression expression, SqlWrapper sqlWrapper)
        {
            if (sqlWrapper.DatabaseType != DatabaseType.Oracle)
            {
                sqlWrapper.Append("(");
            }

            var fields = new List <string>();

            foreach (MemberAssignment m in expression.Bindings)
            {
                var type = m.Member.DeclaringType.IsAnonymousType() ?
                           sqlWrapper.DefaultType :
                           m.Member.DeclaringType;

                var(columnName, isInsert, isUpdate) = sqlWrapper.GetColumnInfo(type, m.Member);
                if (isInsert)
                {
                    var value = m.Expression.ToObject();
                    if (value != null || (sqlWrapper.IsEnableNullValue && value == null))
                    {
                        sqlWrapper.AddDbParameter(value);
                        if (!fields.Contains(columnName))
                        {
                            fields.Add(columnName);
                        }
                        sqlWrapper += ",";
                    }
                }
            }

            if (sqlWrapper[sqlWrapper.Length - 1] == ',')
            {
                sqlWrapper.Remove(sqlWrapper.Length - 1, 1);
                if (sqlWrapper.DatabaseType != DatabaseType.Oracle)
                {
                    sqlWrapper.Append(")");
                }
                else
                {
                    sqlWrapper.Append(" FROM DUAL");
                }
            }

            sqlWrapper.Reset(string.Format(sqlWrapper.ToString(), string.Join(",", fields).TrimEnd(',')));
            return(sqlWrapper);
        }
Пример #4
0
        // LoadRecentMsgsList unused?

        /// <summary>
        /// The load recent msgs list.
        /// </summary>
        /// <param name="charId">
        /// The char Id.
        /// </param>
        /// <returns>
        /// List of received messages
        /// </returns>
        public static Collection <RecentMsgsEntry> LoadRecentMsgsList(uint charId)
        {
            Collection <RecentMsgsEntry> reciviedMsgsList = new Collection <RecentMsgsEntry>();
            SqlWrapper ms       = new SqlWrapper();
            string     sqlQuery = "SELECT `ReceivedID` FROM `receivedmsgs` WHERE PlayerID =" + "'" + charId + "'";
            DataTable  dt       = ms.ReadDatatable(sqlQuery);

            foreach (DataRow msgsRow in dt.Rows)
            {
                RecentMsgsEntry rme = new RecentMsgsEntry {
                    ReceivedId = uint.Parse(msgsRow["ReceivedID"].ToString())
                };
                reciviedMsgsList.Add(rme);
            }

            return(reciviedMsgsList);
        }
Пример #5
0
        /// <summary>
        /// Count
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Count(NewExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Members != null)
            {
                for (var i = 0; i < expression.Members.Count; i++)
                {
                    var argument = expression.Arguments[i];
                    SqlExpressionProvider.Count(argument, sqlWrapper);
                }
            }
            else
            {
                sqlWrapper.AddField("*");
            }

            return(sqlWrapper);
        }
Пример #6
0
        /// <summary>
        /// Having
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Having(ConstantExpression expression, SqlWrapper sqlWrapper)
        {
            //表达式左侧为bool类型常量
            if (expression.NodeType == ExpressionType.Constant && expression.Value is bool res)
            {
                if (!res && sqlWrapper.EndsWith("AND", "OR"))
                {
                    sqlWrapper += " 1 = 0 ";
                }
            }
            else
            {
                sqlWrapper.AddDbParameter(expression.Value);
            }

            return(sqlWrapper);
        }
Пример #7
0
        /// <summary>
        /// Write meshs to database
        /// TODO: catch exceptions
        /// </summary>
        public void writeMeshstoSql()
        {
            SqlWrapper Sql = new SqlWrapper();

            Sql.SqlDelete(
                "DELETE FROM " + this.GetSqlTablefromDynelType() + "meshs WHERE ID=" + this.Id.ToString()
                + " AND playfield=" + this.PlayField.ToString());
            int c;

            for (c = 0; c < this.Meshs.Count; c++)
            {
                Sql.SqlInsert(
                    "INSERT INTO " + this.GetSqlTablefromDynelType() + "meshs VALUES (" + this.Id.ToString() + ","
                    + this.PlayField.ToString() + "," + this.Meshs[c].Position.ToString() + ","
                    + this.Meshs[c].Mesh.ToString() + "," + this.Meshs[c].OverrideTexture.ToString() + ")");
            }
        }
Пример #8
0
        /// <summary>
        /// Update the field data for this object to the db
        /// </summary>
        /// <returns>success status</returns>
        public override bool Save()
        {
            var parms = new Dictionary <string, object>();

            var sql = new StringBuilder();

            sql.Append("update [dbo].[Material] set ");
            sql.Append(" [Name] = @Name ");

            sql.Append(", [Conductive] = @Conductive ");
            sql.Append(", [Magnetic] = @Magnetic ");
            sql.Append(", [Flammable] = @Flammable ");
            sql.Append(", [Viscosity] = @Viscosity ");
            sql.Append(", [Density] = @Density ");
            sql.Append(", [Mallebility] = @Mallebility ");
            sql.Append(", [Ductility] = @Ductility ");
            sql.Append(", [Porosity] = @Porosity ");
            sql.Append(", [SolidPoint] = @SolidPoint ");
            sql.Append(", [GasPoint] = @GasPoint ");
            sql.Append(", [TemperatureRetention] = @TemperatureRetention ");
            sql.Append(", [Resistance] = @Resistance ");
            sql.Append(", [Composition] = @Composition ");
            sql.Append(", [LastRevised] = GetUTCDate()");
            sql.Append(" where ID = @id");

            parms.Add("id", ID);
            parms.Add("Name", Name);
            parms.Add("Conductive", Conductive);
            parms.Add("Magnetic", Magnetic);
            parms.Add("Flammable", Flammable);
            parms.Add("Viscosity", Viscosity);
            parms.Add("Density", Density);
            parms.Add("Mallebility", Mallebility);
            parms.Add("Ductility", Ductility);
            parms.Add("Porosity", Porosity);
            parms.Add("SolidPoint", SolidPoint);
            parms.Add("GasPoint", GasPoint);
            parms.Add("TemperatureRetention", TemperatureRetention);
            parms.Add("Resistance", SerializeResistances());
            parms.Add("Composition", SerializeCompositions());

            SqlWrapper.RunNonQuery(sql.ToString(), CommandType.Text, parms);

            return(true);
        }
        /// <summary>
        /// Where
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Where(MemberExpression expression, SqlWrapper sqlWrapper)
        {
            //此处判断expression的Member是否是可空值类型
            if (expression.Expression?.NodeType == ExpressionType.MemberAccess && expression.Member.DeclaringType.IsNullable())
            {
                expression = expression.Expression as MemberExpression;
            }

            if (expression != null)
            {
                if (expression.Expression?.NodeType == ExpressionType.Parameter)
                {
                    var type = expression.Expression.Type != expression.Member.DeclaringType ?
                               expression.Expression.Type :
                               expression.Member.DeclaringType;

                    var tableName  = sqlWrapper.GetTableName(type);
                    var tableAlias = (expression.Expression as ParameterExpression)?.Name;
                    tableAlias = sqlWrapper.GetTableAlias(tableName, tableAlias);

                    if (tableAlias.IsNotNullOrEmpty())
                    {
                        tableAlias += ".";
                    }

                    sqlWrapper += tableAlias + sqlWrapper.GetColumnInfo(expression.Member.DeclaringType, expression.Member).ColumnName;

                    //字段是bool类型
                    if (expression.NodeType == ExpressionType.MemberAccess && expression.Type.GetCoreType() == typeof(bool))
                    {
                        if (sqlWrapper.DatabaseType is DatabaseType.MySql or DatabaseType.PostgreSql)
                        {
                            sqlWrapper += " IS TRUE";
                        }
                        else
                        {
                            sqlWrapper += " = 1";
                        }
                    }
                }
                else
                {
                    sqlWrapper.AddDbParameter(expression.ToObject());
                }
            }
Пример #10
0
        /// <summary>
        /// Write weaponpairs to database
        /// TODO: catch exceptions
        /// </summary>
        public void WriteWeaponpairstoSql()
        {
            SqlWrapper Sql = new SqlWrapper();

            Sql.SqlDelete(
                "DELETE FROM " + this.GetSqlTablefromDynelType() + "weaponpairs WHERE ID=" + this.Id.ToString()
                + " AND playfield=" + this.PlayField.ToString() + ";");
            int c;

            for (c = 0; c < this.Weaponpairs.Count; c++)
            {
                Sql.SqlInsert(
                    "INSERT INTO " + this.GetSqlTablefromDynelType() + "weaponpairs VALUES (" + this.Id.ToString() + ","
                    + this.PlayField.ToString() + "," + this.Weaponpairs[c].value1.ToString() + ","
                    + this.Weaponpairs[c].value2.ToString() + "," + this.Weaponpairs[c].value3.ToString() + ","
                    + this.Weaponpairs[c].value4.ToString() + ");");
            }
        }
        /// <summary>
        /// Join
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Join(ConstantExpression expression, SqlWrapper sqlWrapper)
        {
            //表达式左侧为bool类型常量
            if (expression.NodeType == ExpressionType.Constant && expression.Value is bool b)
            {
                var sql = sqlWrapper.ToString().ToUpper().Trim();
                if (!b && (sql.EndsWith("AND") || sql.EndsWith("OR")))
                {
                    sqlWrapper += " 1 = 0 ";
                }
            }
            else
            {
                sqlWrapper.AddDbParameter(expression.Value);
            }

            return(sqlWrapper);
        }
Пример #12
0
        /// <summary>
        /// Write newly created NPC to database
        /// </summary>
        public void AddToDB()
        {
            SqlWrapper Sql = new SqlWrapper();

            Sql.SqlInsert(
                "INSERT INTO " + this.GetSqlTablefromDynelType() + " (ID, Playfield) VALUES (" + this.Id.ToString()
                + "," + this.PlayField.ToString() + ")");
            this.WriteCoordinatesToSql();
            this.WriteHeadingToSql();
            this.writeMainStatstoSql();

            this.WriteStats();
            this.WriteInventoryToSql();
            this.WriteNanosToSql();
            this.writeWaypointstoSql();
            this.WriteWeaponpairstoSql();
            this.writeMeshstoSql();
        }
Пример #13
0
        /// <summary>
        /// Write Textures to Sql Table
        /// </summary>
        public void WriteTexturesToSql()
        {
            SqlWrapper sqlWrapper = new SqlWrapper();
            int        count;
            string     upd = "";

            for (count = 0; count < this.Textures.Count; count++)
            {
                upd += "textures" + this.Textures[count].place.ToString() + "="
                       + this.Textures[count].Texture.ToString();
                if (count < this.Textures.Count - 1)
                {
                    upd += ", ";
                }
            }
            sqlWrapper.SqlUpdate(
                "UPDATE " + this.GetSqlTablefromDynelType() + " SET " + upd + " WHERE ID=" + this.Id.ToString() + ";");
        }
Пример #14
0
        public void writeWaypointstoSQL()
        {
            SqlWrapper ms = new SqlWrapper();
            int        count;

            ms.SqlDelete("DELETE FROM " + getSQLTablefromDynelType() + "waypoints WHERE ID=" + ID.ToString());

            for (count = 0; count < Waypoints.Count; count++)
            {
                ms.SqlInsert("INSERT INTO " + getSQLTablefromDynelType() + "waypoints VALUES (" + ID.ToString() + "," + PlayField.ToString() + ","
                             + String.Format(System.Globalization.CultureInfo.InvariantCulture, "'{0}'", Waypoints[count].x) + ","
                             + String.Format(System.Globalization.CultureInfo.InvariantCulture, "'{0}'", Waypoints[count].y) + ","
                             + String.Format(System.Globalization.CultureInfo.InvariantCulture, "'{0}'", Waypoints[count].z) + ")");
            }
            if (Waypoints.Count > 0)
            {
            }
        }
Пример #15
0
        /// <summary>
        /// In
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper In(NewArrayExpression expression, SqlWrapper sqlWrapper)
        {
            sqlWrapper += "(";
            foreach (Expression expressionItem in expression.Expressions)
            {
                SqlExpressionProvider.In(expressionItem, sqlWrapper);
                sqlWrapper += ",";
            }

            if (sqlWrapper[sqlWrapper.Length - 1] == ',')
            {
                sqlWrapper.Remove(sqlWrapper.Length - 1, 1);
            }

            sqlWrapper += ")";

            return(sqlWrapper);
        }
        /// <summary>
        /// Where
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Where(UnaryExpression expression, SqlWrapper sqlWrapper)
        {
            var startIndex = sqlWrapper.Length;

            if (new[] { ExpressionType.ArrayLength, ExpressionType.ArrayIndex }.Contains(expression.NodeType))
            {
                sqlWrapper.AddDbParameter(expression.ToObject());
            }
            else
            {
                SqlExpressionProvider.Where(expression.Operand, sqlWrapper);

                //取非解析
                ExpressionNotResolver(expression, sqlWrapper, startIndex);
            }

            return(sqlWrapper);
        }
Пример #17
0
        public void readWeaponpairsfromSQL()
        {
            AOWeaponpairs m_wp;
            SqlWrapper    Sql = new SqlWrapper();

            Weaponpairs.Clear();
            DataTable dt = Sql.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "weaponpairs WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString());

            foreach (DataRow row in dt.Rows)
            {
                m_wp        = new AOWeaponpairs();
                m_wp.value1 = (Int32)row["value1"];
                m_wp.value2 = (Int32)row["value2"];
                m_wp.value3 = (Int32)row["value3"];
                m_wp.value4 = (Int32)row["value4"];
                Weaponpairs.Add(m_wp);
            }
        }
Пример #18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="charid"></param>
        public void DeleteChar(Client client, Int32 charid)
        {
            MemoryStream m_stream = new MemoryStream();
            BinaryWriter m_writer = new BinaryWriter(m_stream);
            SqlWrapper   ms       = new SqlWrapper();

            try
            {   /* delete char */
                /* i assume there should be somewhere a flag, caus FC can reenable a deleted char.. */
                string SqlQuery = "DELETE FROM `characters` WHERE ID = " + charid;
                ms.SqlDelete(SqlQuery);
                SqlQuery = "DELETE FROM `characters_stats` WHERE ID = " + charid;
                ms.SqlDelete(SqlQuery);
                SqlQuery = "DELETE FROM `organizations` WHERE ID = " + charid;
                ms.SqlDelete(SqlQuery);
                SqlQuery = "DELETE FROM `inventory` WHERE ID = " + charid;
                ms.SqlDelete(SqlQuery);
            }
            catch (Exception e)
            {
                Console.WriteLine(this.m_name + e.Message);
            }
            /* Send Cleint delete message */
            m_writer.Write(new byte[]
            {
                0xDF, 0xDF, 0x00, 0x01, 0x00, 0x01, 0x00,
                0x00,                               /* msg size - 2 byte */
                0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
                0xff, 0xff,
                0x00, 0x00, 0x00,
                0x15                               /* answer 0x15, char_id */
            });
            m_writer.Write(IPAddress.HostToNetworkOrder(charid));
            m_writer.Flush();
            m_stream.Capacity = (int)m_stream.Length;
            byte[] reply = m_stream.GetBuffer();
            m_writer.Close();
            m_stream.Dispose();
            /* insert size */
            byte[] packetlength = BitConverter.GetBytes(reply.Length);
            reply[7] = packetlength[0];
            /* send response */
            client.Send(ref reply);
        }
Пример #19
0
        /// <summary>
        /// The execute command.
        /// </summary>
        /// <param name="client">
        /// The client.
        /// </param>
        /// <param name="target">
        /// The target.
        /// </param>
        /// <param name="args">
        /// The args.
        /// </param>
        public override void ExecuteCommand(Client client, Identity target, string[] args)
        {
            if (args.Length >= 2)
            {
                if (args[1].ToLower() == "list")
                {
                    string filter = string.Empty;
                    if (args.Length > 2)
                    {
                        for (int i = 2; i < args.Length; i++)
                        {
                            if (filter.Length > 0)
                            {
                                filter = filter + " AND ";
                            }

                            if (filter.Length == 0)
                            {
                                filter = "WHERE ";
                            }

                            filter = filter + "name like '%" + args[i] + "%' ";
                        }
                    }

                    SqlWrapper sql = new SqlWrapper();
                    DataTable  dt  =
                        sql.ReadDatatable("SELECT Hash, Name FROM mobtemplate " + filter + " order by Name ASC");
                    client.SendChatText("List of mobtemplates: ");
                    foreach (DataRow row in dt.Rows)
                    {
                        client.SendChatText(row[0] + " " + row[1]);
                    }
                    return;
                }
            }

            if (args.Length == 3)
            {
                NonPlayerCharacterHandler.SpawnMonster(client, args[1], uint.Parse(args[2]));
                return;
            }
            this.CommandHelp(client);
        }
Пример #20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="start_in_sl"></param>
        /// <param name="charid"></param>
        public void SendNameToStartPF(Client client, bool start_in_sl, Int32 charid)
        {
            MemoryStream m_stream = new MemoryStream();
            BinaryWriter m_writer = new BinaryWriter(m_stream);
            SqlWrapper   ms       = new SqlWrapper();

            /* set startplayfield */
            string SqlUpdate = "UPDATE `characters` set ";

            if (start_in_sl)
            {
                SqlUpdate += "`playfield`=4001,`X`=850,`Y`=43,`Z`=565 ";
            }
            else
            {
                SqlUpdate += "`playfield`=4582,`X`=939,`Y`=20,`Z`=732 ";
            }
            SqlUpdate += " where `ID` = " + charid;

            ms.SqlUpdate(SqlUpdate);

            m_writer.Write(new byte[]
            {
                0xDF, 0xDF, 0x00, 0x01, 0x00, 0x01, 0x00,
                0x00,                              /* msg size - 2 byte */
                0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
                0xff, 0xff,                        /* possible timecode */
                0x00, 0x00, 0x00,
                0x11                               /* answer 0x11, char_id */
            });
            m_writer.Write(IPAddress.HostToNetworkOrder(charid));
            m_writer.Write(new byte[] { 0xb0, 0xd2, 0xff, 0xff }); /* unknown */
            m_writer.Flush();
            m_stream.Capacity = (int)m_stream.Length;
            byte[] reply = m_stream.GetBuffer();
            m_writer.Close();
            m_stream.Dispose();
            /* insert size */
            byte[] packetlength = BitConverter.GetBytes(reply.Length);
            reply[7] = packetlength[0];

            /* send response */
            client.Send(ref reply);
        }
Пример #21
0
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(NewExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Members != null)
            {
                for (var i = 0; i < expression.Members.Count; i++)
                {
                    var argument = expression.Arguments[i];
                    var member   = expression.Members[i];
                    SqlExpressionProvider.Select(argument, sqlWrapper);

                    //添加字段别名
                    if (argument is MemberExpression memberExpression && memberExpression.Member.Name != member.Name)
                    {
                        sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                    }
                    else if (argument is ConstantExpression constantExpression && constantExpression.Value?.ToString() != member.Name)
                    {
                        sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                    }
Пример #22
0
 public void Update(JobUpdateRequest req)
 {
     using (SqlConnection con = new SqlConnection(connectionString))
     {
         con.Open();
         SqlCommand cmd = new SqlWrapper().Wrapper("Jobs_update", con);
         cmd.Parameters.AddWithValue("@id", req.Id);
         cmd.Parameters.AddWithValue("@job_id", req.JobId);
         cmd.Parameters.AddWithValue("@title", req.Title);
         cmd.Parameters.AddWithValue("@url", req.Url);
         cmd.Parameters.AddWithValue("@company", req.Company);
         cmd.Parameters.AddWithValue("@description", req.Description);
         cmd.Parameters.AddWithValue("@location", req.Location);
         cmd.Parameters.AddWithValue("@date_applied", req.DateApplied);
         cmd.Parameters.AddWithValue("@archived", req.Archived);
         cmd.Parameters.AddWithValue("@quick_apply", req.QuickApply);
         cmd.ExecuteNonQuery();
     }
 }
Пример #23
0
        public static void CacheAllFromDB()
        {
            SqlWrapper wrapper = new SqlWrapper();
            DataTable  dt      = wrapper.ReadDatatable("SELECT * FROM mobdroptable");

            DataRowCollection drc = dt.Rows;

            foreach (DataRow row in drc)
            {
                FullDropList.Add(
                    new LootItem(
                        row[0].ToString(),
                        row[1].ToString(),
                        row[2].ToString(),
                        row[3].ToString(),
                        row[4].ToString(),
                        row[5].ToString()));
            }
        }
Пример #24
0
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(MemberInitExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Bindings?.Count > 0)
            {
                foreach (MemberAssignment memberAssignment in expression.Bindings)
                {
                    var type = expression.Type != memberAssignment.Member.DeclaringType ?
                               expression.Type :
                               memberAssignment.Member.DeclaringType;

                    var aliasName = memberAssignment.Member.Name;
                    var tableName = sqlWrapper.GetTableName(type);

                    if ((memberAssignment.Expression as MemberExpression)?.Expression is ParameterExpression parameterExpr)
                    {
                        var tableAlias = sqlWrapper.GetTableAlias(tableName, parameterExpr.Name);

                        if (!tableAlias.IsNullOrEmpty())
                        {
                            tableAlias += ".";
                        }

                        var fieldName = tableAlias + sqlWrapper.GetColumnInfo(type, memberAssignment.Member).columnName;

                        sqlWrapper.AddField(fieldName);
                    }
                    else
                    {
                        var fieldName = memberAssignment.Expression.ToObject().ToString();

                        sqlWrapper.AddField(fieldName);
                    }

                    sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(aliasName)}";
                }
            }
            else
            {
                sqlWrapper.AddField("*");
            }

            return(sqlWrapper);
        }
        /// <summary>
        /// Insert
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Insert(ListInitExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.ToObject() is IEnumerable collection)
            {
                var i      = 0;
                var fields = new List <string>();

                foreach (var item in collection)
                {
                    if (sqlWrapper.DatabaseType != DatabaseType.Oracle)
                    {
                        sqlWrapper.Append("(");
                    }

                    if (i > 0 && sqlWrapper.DatabaseType == DatabaseType.Oracle)
                    {
                        sqlWrapper.Append(" UNION ALL SELECT ");
                    }

                    var properties = item?.GetType().GetProperties();
                    foreach (var p in properties)
                    {
                        var type = p.DeclaringType.IsAnonymousType() ?
                                   sqlWrapper.DefaultType :
                                   p.DeclaringType;

                        var columnInfo = sqlWrapper.GetColumnInfo(type, p);
                        if (columnInfo.IsInsert)
                        {
                            var value = p.GetValue(item, null);
                            if (value != null || (sqlWrapper.IsEnableNullValue && value == null))
                            {
                                sqlWrapper.AddDbParameter(value, columnInfo.DataType);
                                if (!fields.Contains(columnInfo.ColumnName))
                                {
                                    fields.Add(columnInfo.ColumnName);
                                }
                                sqlWrapper += ",";
                            }
                        }
                    }

                    if (sqlWrapper[^ 1] == ',')
Пример #26
0
        /// <summary>
        /// Read meshs from database
        /// TODO: catch exceptions
        /// </summary>
        public void readMeshsfromSql()
        {
            SqlWrapper Sql = new SqlWrapper();

            this.Meshs.Clear();
            AOMeshs   m_m;
            DataTable dt =
                Sql.ReadDatatable(
                    "SELECT * from " + this.GetSqlTablefromDynelType() + "meshs WHERE ID=" + this.Id.ToString()
                    + " AND playfield=" + this.PlayField.ToString());

            foreach (DataRow row in dt.Rows)
            {
                m_m                 = new AOMeshs();
                m_m.Position        = (Int32)row["meshvalue1"];
                m_m.Mesh            = (Int32)row["meshvalue2"];
                m_m.OverrideTexture = (Int32)row["meshvalue3"];
            }
        }
        /// <summary>
        /// Join
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Join(MemberExpression expression, SqlWrapper sqlWrapper)
        {
            var type = expression.Expression.Type != expression.Member.DeclaringType ?
                       expression.Expression.Type :
                       expression.Member.DeclaringType;

            var tableName  = sqlWrapper.GetTableName(type);
            var parameter  = expression.Expression as ParameterExpression;
            var tableAlias = sqlWrapper.GetTableAlias(tableName, parameter?.Name);

            if (tableAlias.IsNotNullOrEmpty())
            {
                tableAlias += ".";
            }

            sqlWrapper += tableAlias + sqlWrapper.GetColumnInfo(expression.Member.DeclaringType, expression.Member).ColumnName;

            return(sqlWrapper);
        }
Пример #28
0
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(MemberInitExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Bindings?.Count > 0)
            {
                foreach (MemberAssignment memberAssignment in expression.Bindings)
                {
                    if (memberAssignment.Expression is MemberExpression memberExpr && memberExpr.Expression is ParameterExpression parameterExpr)
                    {
                        var type       = parameterExpr.Type;
                        var tableName  = sqlWrapper.GetTableName(type);
                        var tableAlias = sqlWrapper.GetTableAlias(tableName, parameterExpr.Name);

                        if (tableAlias.IsNotNullOrEmpty())
                        {
                            tableAlias += ".";
                        }

                        var fieldName = tableAlias + sqlWrapper.GetColumnInfo(type, memberExpr.Member).ColumnName;

                        sqlWrapper.AddField(fieldName);
                    }
                    else
                    {
                        var fieldName = memberAssignment.Expression.ToObject().ToString();

                        sqlWrapper.AddField(fieldName);
                    }

                    var aliasName = sqlWrapper.GetColumnName(memberAssignment.Member.Name);

                    var field = sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1];

                    if (field.IsNotNullOrEmpty() && field.Contains(".") && !field.Contains("(", ")"))
                    {
                        field = field.Split('.').LastOrDefault();
                    }

                    if (!field.Equals(!sqlWrapper.IsEnableFormat, aliasName))
                    {
                        sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {aliasName}";
                    }
                }
Пример #29
0
        /// <summary>
        /// OrderBy
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <param name="orders">排序方式</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper OrderBy(NewExpression expression, SqlWrapper sqlWrapper, params OrderType[] orders)
        {
            for (var i = 0; i < expression.Arguments.Count; i++)
            {
                SqlExpressionProvider.OrderBy(expression.Arguments[i], sqlWrapper);

                if (i <= orders.Length - 1)
                {
                    sqlWrapper += $" { (orders[i] == OrderType.Descending ? "DESC" : "ASC")},";
                }
                else
                {
                    sqlWrapper += " ASC,";
                }
            }

            sqlWrapper.RemoveLast(',');

            return(sqlWrapper);
        }
Пример #30
0
        /// <summary>
        /// Read Coordinates from Sql Table
        /// </summary>
        public void ReadCoordsFromSql()
        {
            SqlWrapper ms = new SqlWrapper();

            if (this.Type == 0)
            {
                return;
            }
            string    SqlTable = this.GetSqlTablefromDynelType();
            DataTable dt       =
                ms.ReadDatatable("SELECT Playfield, X,Y,Z from " + SqlTable + " WHERE ID=" + this.Id.ToString() + ";");

            if (dt.Rows.Count > 0)
            {
                this.PlayField     = (Int32)dt.Rows[0][0];
                this.Coordinates.x = (Single)dt.Rows[0][1];
                this.Coordinates.y = (Single)dt.Rows[0][2];
                this.Coordinates.z = (Single)dt.Rows[0][3];
            }
        }