簡體   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