【发布时间】:2020-03-09 05:32:30
【问题描述】:
ExecuteReader 正在为代码查询中的列 MESSAGE 返回空值,但其他列正在返回正确的值。数据存在于数据库中,如下图所示请谁能告诉我哪里出错了
Oracle 数据库返回
Oracle 创建表
CREATE TABLE "CHT"."HEALTH_RECORD_MESSAGES"
(
"RECORD" NUMBER NOT NULL ENABLE,
"MESSAGE" LONG,
"CREATED" DATE,
"CREATED_TIME" VARCHAR2(5 BYTE),
"WHO_ENTERED" VARCHAR2(15 BYTE),
"EXPIRES" DATE
)
类模型
public class HealthRecordMessage
{
public int RECORD { get; set; }
public string MESSAGE { get; set; }
public DateTime CREATED { get; set; }
public DateTime CREATED_TIME { get; set; }
public string WHO_ENTERED { get; set; }
}
C#代码
public ActionResult SearchHealthRecordMessage(int? id)
{
List<HealthRecordMessage> HealthRecordMessage = new List<HealthRecordMessage>();
using (OracleConnection conn = new OracleConnection(WebConfigurationManager.ConnectionStrings["HealthRecord"].ConnectionString))
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = @"SELECT RECORD,MESSAGE,WHO_ENTERED,CREATED,CREATED_TIME
FROM
HEALTH_RECORD_MESSAGES
Where RECORD=:RecordId";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("RecordId", id);
OracleDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
var healthrecordMessage = new HealthRecordMessage();
healthrecordMessage.RECORD =Convert.ToInt32(rdr["RECORD"]);
healthrecordMessage.MESSAGE =rdr["MESSAGE"].ToString();// this is My problem Message Value is null
healthrecordMessage.WHO_ENTERED = rdr["WHO_ENTERED"].ToString();
healthrecordMessage.CREATED = Convert.ToDateTime(rdr["CREATED"]);
healthrecordMessage.CREATED_TIME = Convert.ToDateTime(rdr["CREATED_TIME"]);
HealthRecordMessage.Add(healthrecordMessage);
}
//return View(patientList);
}
return Json(new { data = HealthRecordMessage }, JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
在带有
Add的代码行上放置一个断点。运行到断点,然后转到Immediate Window并输入?healthrecordMessage.MESSAGE.Length请分享结果。 -
数据库中字段的编码是什么?
-
@mjwills 从请求“healthrecordMessage.MESSAGE.Length”返回引发了“System.NullReferenceException”类型的异常数据:{System.Collections.ListDictionaryInternal} HResult:-2147467261 HelpLink:null InnerException:null 消息: “你调用的对象是空的。”来源:“cd938a7e322d4459bb721016f0afcd9f”StackTrace:“在 x.m0(HealthRecordController 4__this, Nullable
1 id)" TargetSite: {Int32 <>m0(NSCHT.HealthRecord.Controllers.HealthRecordController, System.Nullable1[System.Int32])}