繁体   English   中英

尝试从数据库中检索时出错

[英]Error when trying to retrieve from database

我从 XSD 模式生成了三个类:

public partial class PathDetailsMessage {
    private MessageHeader messageHeaderField;

    public MessageHeader MessageHeader {
        get {
            return this.messageHeaderField;
        }
        set {
            this.messageHeaderField = value;
        }
    }
}


public partial class MessageHeader {
    private Recipient recipientField;

    public Recipient Recipient {
        get {
            return this.recipientField;
        }
        set {
            this.recipientField = value;
        }
    }
}


public partial class Recipient {
    private string valueField;

    public string Value {
        get {
            return this.valueField;
        }
        set {
            this.valueField = value;
        }
    }
}

当我尝试将 id 的值(数据库中的一个字符)放入 medusa.MessageHeader.Recipient.Value 时,我收到一个错误(见下文):

if (dr.HasRows)
{
  dr.Read();
  medusa.MessageHeader.Recipient.Value = Convert.ToString(dr["id"]);
  dr.Close();
}

我收到以下错误:

 System.NullReferenceException: 'Object reference not set to an instance of an object.' PathDetailsMessage.MessageHeader.get returned null.

我使用以下 SQL 字符串:

string sqlString = "SELECT id FROM view_otf WHERE id LIKE '%079%'";

id 列是数据库中的 CHAR。

我想不出这个问题的解决方案。

你能帮助我吗?

谢谢你。

LE :这 3 个类在同一个.cs 文件中。

LE2 :美杜莎是一个 object 从 PathDetailsMessage.cs 文件中初始化,class 是从 XSD 模式创建的

PathDetailsMessage medusa = new PathDetailsMessage();

我们缺少美medusa初始化代码,但你应该这样做:

medusa.MessageHeader = new MessageHeader {
    Recipient = new Recipient()
};
medusa.MessageHeader.Recipient.Value = Convert.ToString(dr["id"]);

这是因为像PathDetailsMessage这样的 class 的初始化不会为MessageHeader属性设置任何值,该属性将为 null。 这同样适用于Recipient属性。 因此,通过上述初始化,您将拥有一些 object 来存储值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM