GVKun编程网logo

OpenQuery结果中的SQL语句出现“无效列名”错误(sql报错无效的列类型)

13

在这篇文章中,我们将带领您了解OpenQuery结果中的SQL语句出现“无效列名”错误的全貌,包括sql报错无效的列类型的相关情况。同时,我们还将为您介绍有关c#–将复杂类型映射到实体框架中的SqlQ

在这篇文章中,我们将带领您了解OpenQuery结果中的SQL语句出现“无效列名”错误的全貌,包括sql报错无效的列类型的相关情况。同时,我们还将为您介绍有关c# – 将复杂类型映射到实体框架中的SqlQuery结果、IE中出现jQuery ajax调用时出现“无传输”错误、Laravel MS SQL DB::RAW 查询返回“无效的列名”、Linq通过SQL_Query执行SQL语句的知识,以帮助您更好地理解这个主题。

本文目录一览:

OpenQuery结果中的SQL语句出现“无效列名”错误(sql报错无效的列类型)

OpenQuery结果中的SQL语句出现“无效列名”错误(sql报错无效的列类型)

我正在尝试通过链接的SSAS服务器执行SQL查询。初始查询工作正常:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP,'OLAP Query')

但是,如果我尝试添加:

WHERE "Value" > 0

我得到一个错误

无效的列名“值”

有什么想法我可能做错了吗?


因此,问题在于处理查询元素的顺序与写入顺序不同。根据此消息来源:

http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

MSSQL中的评估顺序为:

  1. FROM
  2. ON
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. HAVING
  7. SELECT
  8. ORDER BY

因此,别名直到WHERE和HAVING子句之后才被处理。

c# – 将复杂类型映射到实体框架中的SqlQuery结果

c# – 将复杂类型映射到实体框架中的SqlQuery结果

我使用 SqlQuery调用存储过程,结果应该是对象图,即
public class Person
 {
   public int Id{get;set;}
   public string FullName {get;set;}
   public Address HomeAddress {get;set;}
   public Vehicle PrivateVehicle {get;set;}
 }

但是sqlQuery不会映射地址和车辆.它只将列名映射到属性.

有没有解决这个问题?我怎么做映射?

I found this:

.. what you can’t do is return graphs of objects,e.g. entities that contain properties of complex types.

解决方法

实体框架(无论如何最多6个)不支持将原始sqlQueries映射到对象图,仅作为简单实体.

您可以使用标准LINQ与它们之间的标准实体框架参考映射,并使用包含或您需要的任何其他内容.

但是,如果标准的LINQ到EF不起作用,因为你的sqlQuery使用sql函数或存储过程或其他东西,那么你运气不好.

PS:发布SQL查询可能在将来有所帮助,因此答案可能更具体地针对您的问题.

IE中出现jQuery ajax调用时出现“无传输”错误

IE中出现jQuery ajax调用时出现“无传输”错误

我需要使用foursquare API搜索场所。当然,它是跨域的。

它在Firefox中没有任何问题,但是在Internet Explorer中(我已经测试过7、8、9)。

我的JavaScript代码如下所示:

searchVenues: function(searchQuery) {    $.ajax({       url: ''https://api.foursquare.com/v2/venues/search'',       data: {            sw: bound_south_west,            ne: bound_north_east,            query: searchQuery.query,            oauth_token: FSQ_OAUTH_TOKEN,            limit: 25,            intent: ''browse'',            v: 20120206       },       cache: false,       dataType: ''json'',       success: function(data) {           displayResults(data, searchQuery.query);       },       error: function(xhr, status, errorThrown) {           console.log(errorThrown+''\n''+status+''\n''+xhr.statusText);       }    });}

在Firefox中,它可以完美显示接收到的数据。在Internet Explorer中,它登录控制台:

No TransportErrorError

我该怎么办?

答案1

小编典典

我在Windows Mobile 7上对此进行了测试。

经过大量的时间来理解后,我终于找到了:

http://bugs.jquery.com/ticket/10660

解决方案很简单,只需设置以下内容:

$.support.cors = true;

和Ajax跨域请求将起作用!

Laravel MS SQL DB::RAW 查询返回“无效的列名”

Laravel MS SQL DB::RAW 查询返回“无效的列名”

解决方案

刚刚找到解决方案:

$positions = selectlineBelegPos::select(
                                       DB::raw("YEAR(Datum) AS year"),DB::raw("MONTH(Datum) AS month"),DB::raw("SUM(Menge) AS stunden")
                                       )
                                       ->groupBy(DB::raw("YEAR([Datum])"),DB::raw("MONTH([Datum])"))
                                       ->get();

确实不是 GROUPBY 子句中不可用的动态值名称(年和月),而是您必须再次调用 DB::raw 但现在无需再次生成关键字。

感谢大家的支持!

Linq通过SQL_Query执行SQL语句

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

 

关于OpenQuery结果中的SQL语句出现“无效列名”错误sql报错无效的列类型的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于c# – 将复杂类型映射到实体框架中的SqlQuery结果、IE中出现jQuery ajax调用时出现“无传输”错误、Laravel MS SQL DB::RAW 查询返回“无效的列名”、Linq通过SQL_Query执行SQL语句的相关知识,请在本站寻找。

本文标签: