【问题标题】:Problem with SQL CASE sentence in C# ASP.NET [duplicate]C# ASP.NET 中的 SQL CASE 语句问题 [重复]
【发布时间】:2019-11-26 09:36:34
【问题描述】:

我正在为一个项目开发代码。我有一个连接到项目的.mdb MS Access 数据库。我正在使用以下代码在 GridView 中显示表格的信息

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT Fecha, Descripción AS Mensaje, " + 
                                    "CASE WHEN Admin = true THEN 'Admin' ELSE 'Usuario' END" +
                                    "FROM Detalle WHERE IdParte = ? ORDER BY Fecha", conn);
cmd.Parameters.AddWithValue("IdParte", ddPartes.SelectedValue);

OleDbDataReader dr = cmd.ExecuteReader();

GridView1.DataSource = dr;
GridView1.DataBind();

conn.Close();

我得到的错误的详细信息:

System.Data.OleDb.OleDbException
HResult=0x80004005
Mensaje = 错误 de IErrorInfo.GetDescription con E_FAIL(0x80004005)。
原产地 =
Seguimiento de la pila:

【问题讨论】:

  • 英文那个错误是什么?
  • 想单独标记SQL,已经改了,对不起
  • 它说你不能评估异常堆栈跟踪
  • 你确定不应该是Admin = 1吗? Admin 的列类型是什么?或者也许Admin = -1 用于访问?
  • 访问您需要使用switchiif 而不是case

标签: c# sql asp.net visual-studio ms-access


【解决方案1】:

您在“END”和“FROM”之间缺少一个空格。只需添加它,您应该就可以了:

OleDbCommand cmd = new OleDbCommand("SELECT Fecha, Descripción AS 
    Mensaje, " + 
    "CASE WHEN Admin = true THEN 'Admin' ELSE 'Usuario' END " +
    // Space added here -----------------------------------^
    "FROM Detalle WHERE IdParte = ? ORDER BY Fecha", conn);

【讨论】:

  • 哦,没看到。但是我已经更改了它,并且一直收到相同的错误。
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多