Linq通过SQL_Query执行SQL语句

   #region BAS_SQL_Query
        public static int BAS_SQL_Query(ref BASCoreType.BAS_SQL_Query_In_Tag SQL_Query_In, ref BASCoreType.BAS_SQL_Query_Out_Tag SQL_Query_Out)
        {
            ModelContext ctx = new ModelContext();
            DbConnection conn = ctx.Database.GetDbConnection();
            DbCommand cmd = conn.CreateCommand();
            conn.Open();
            try
            {
                string sMsgCode = "";
           
                SQL_Query_Out._cmn_out._status_value = GlobalConstant.RESULT_ERROR;

                int iCurRow = 0;

                SQL_Query_Out._size_row = 0;
                SQL_Query_Out.row_count = 0;
                SQL_Query_Out.col_count = 0;
                SQL_Query_Out.next_row = 0;
                SQL_Query_In.sql = StringUtil.Trim(SQL_Query_In.sql);
                if (SQL_Query_In.sql == "")
                {
                    sMsgCode = "ETC-0001";
                    SQL_Query_Out._cmn_out._field_msg = "SQL Query";
                    return 0;
                }
                bool bSelect = false;
                if (StringUtil.Mid(SQL_Query_In.sql, 0, 6).ToUpper() == "SELECT")
                {
                    bSelect = true;
                }
                else if (StringUtil.Mid(SQL_Query_In.sql, 0, 4).ToUpper() == "WITH")
                {
                    bSelect = true;
                }
                else if (StringUtil.Mid(SQL_Query_In.sql, 0, 5).ToUpper() == ";WITH")
                {
                    bSelect = true;
                }
                else if (StringUtil.Mid(SQL_Query_In.sql, 0, 6).ToUpper() == "UPDATE")
                {
                    bSelect = false;
                }
                else if (StringUtil.Mid(SQL_Query_In.sql, 0, 6).ToUpper() == "INSERT")
                {
                    bSelect = false;
                }
                else if (StringUtil.Mid(SQL_Query_In.sql, 0, 6).ToUpper() == "DELETE")
                {
                    bSelect = false;
                }
                else if (StringUtil.Mid(SQL_Query_In.sql, 0, 6).ToUpper() == "#PROSEL")
                {
                    bSelect = true;
                }
                else
                {
                    bSelect = true;

                    //Msg_Code = "ETC-0009";
                    //SQL_Query_Out._cmn_out._field_msg = "SQL = " + StringUtil.Mid(SQL_Query_In.sql, 0, 100);
                    //return false;
                }
                if (!bSelect)
                {
                    cmd.CommandText = SQL_Query_In.sql;
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
                else
                {
                    DataTable table = new DataTable();
                    cmd.CommandText = SQL_Query_In.sql;
                    DbDataReader reader = cmd.ExecuteReader();
                    table.Load(reader);
                    reader.Close();
                    conn.Close();

                    SQL_Query_Out.col_count = table.Columns.Count;
                    int iRows = table.Rows.Count;
                    for (int i = SQL_Query_In.next_row; i < iRows; i++)
                    {
                        if (iCurRow >= GlobalVariable.giMaxRecordsRows)
                        {
                            SQL_Query_Out.next_row = i;
                            break;
                        }
                        Array.Resize(ref SQL_Query_Out.row, iCurRow + 1);
                        SQL_Query_Out.row[iCurRow].col = new BASCoreType.BAS_SQL_Query_Out_Tag_row_col[SQL_Query_Out.col_count + 1];
                        SQL_Query_Out.row[iCurRow]._size_col = SQL_Query_Out.col_count;

                        for (int j = 0; j < SQL_Query_Out.col_count; j++)
                        {
                            if (table.Rows[i][j] == DBNull.Value)
                            {
                                SQL_Query_Out.row[iCurRow].col[j].name = "";
                                SQL_Query_Out.row[iCurRow].col[j].type = "";
                                SQL_Query_Out.row[iCurRow].col[j].size = "";
                                SQL_Query_Out.row[iCurRow].col[j].data = "";
                            }
                            else
                            {
                                SQL_Query_Out.row[iCurRow].col[j].name = table.Columns[j].ColumnName.ToString();
                                SQL_Query_Out.row[iCurRow].col[j].type = table.Columns[j].DataType.ToString();
                                SQL_Query_Out.row[iCurRow].col[j].size = StringUtil.ToString(table.Columns[j].MaxLength);
                                SQL_Query_Out.row[iCurRow].col[j].data = StringUtil.ToString(table.Rows[i][j]);
                            }
                        }
                        iCurRow++;
                    }
                }


                SQL_Query_Out.row_count = iCurRow;
                SQL_Query_Out._size_row = iCurRow;

                SQL_Query_Out._cmn_out._status_value = GlobalConstant.RESULT_SUCCESS;
                if (sMsgCode != "")
                {
                    SQL_Query_Out._cmn_out._msg_code = sMsgCode;
                    SQL_Query_Out._cmn_out._db_err_msg = DBGV._dbc.gErrors.ErrMsg;
                    CommonFunction.COM_GetErrorMsg(SQL_Query_In._cmn_in._language, sMsgCode, ref SQL_Query_Out._cmn_out._msg);
                    GlobalVariable.gLog.AddLog(sMsgCode, SQL_Query_Out._cmn_out._msg);
                    GlobalVariable.gLog.AddLog("FIELD_MSG", SQL_Query_Out._cmn_out._field_msg);
                    GlobalVariable.gLog.LogWrite("ERROR " + CommonFunction.gCOM_Msg_Title, "E");
                }
            }
            catch (Exception ex)
            {
                SQL_Query_Out._cmn_out._status_value = GlobalConstant.RESULT_ERROR;
                SQL_Query_Out._cmn_out._msg = ex.Message;
            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
            }
            return 0;
        }

       #endregion

 

转载于:https://my.oschina.net/8824/blog/3070687

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值