在这篇文章中,我们将带领您了解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报错无效的列类型)
- c# – 将复杂类型映射到实体框架中的SqlQuery结果
- IE中出现jQuery ajax调用时出现“无传输”错误
- Laravel MS SQL DB::RAW 查询返回“无效的列名”
- Linq通过SQL_Query执行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中的评估顺序为:
- FROM
- ON
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
因此,别名直到WHERE和HAVING子句之后才被处理。
c# – 将复杂类型映射到实体框架中的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.
解决方法
您可以使用标准LINQ与它们之间的标准实体框架参考映射,并使用包含或您需要的任何其他内容.
但是,如果标准的LINQ到EF不起作用,因为你的sqlQuery使用sql函数或存储过程或其他东西,那么你运气不好.
PS:发布SQL查询可能在将来有所帮助,因此答案可能更具体地针对您的问题.
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 查询返回“无效的列名”
解决方案
刚刚找到解决方案:
$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语句
#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语句的相关知识,请在本站寻找。
本文标签: