簡體   English   中英

你調用的對象是空的。 C#和訪問

[英]object reference not set to an instance of an object. c# and access

您好,我正在使用C#備份訪問數據庫,我有四個組,分別是訪問配置,數據庫選擇,數據庫備份和數據庫還原。 所以在數據配置上,我在數據庫選擇上有數據源文本框用戶ID文本框和密碼文本框,還有數據庫組合框,因此我可以選擇一個,因此我編寫了此代碼

 public partial class Form11 : Form
{
    private OleDbConnection conn;
    private OleDbCommand command;
    private OleDbDataReader reader;
    string ole = "";
    string connectionString = "";


    public Form11()
    {
        InitializeComponent();
    }

    private void BtnConnect_Click(object sender, EventArgs e)
    {
        try
        {
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                                   @"Data Source = "+txtDataSource.Text+"; User Id="+txtUserId.Text+"; Password="+txtPassword.Text+"";
            conn = new OleDbConnection(connectionString);
            conn.Open();
            ole = "EXEC sp_databases";
            command = new OleDbCommand(ole, conn);
            reader = command.ExecuteReader();
            cmbDatabases.Items.Clear();
            while (reader.Read())
            {
                cmbDatabases.Items.Add(reader[0].ToString());
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }
}

問題是我一直看到對象引用未設置為對象的實例,在這里我使用訪問數據庫,但是在SQL上我沒有這樣的問題,請幫我解決這個問題。 謝謝。

Conn是一個對象,在使用conn.ConnectionString屬性時尚未實例化
只需翻轉這2行的順序

  try
        {
            conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                                   @"Data Source = "+txtDataSource.Text+"; User Id="+txtUserId.Text+"; Password="+txtPassword.Text+"";

在您的代碼中,您在實例化連接對象之前正在使用連接。 您首先需要這個:

conn = new OleDbConnection();

該錯誤應該已經在您的代碼中引用了您遇到此問題的一行-通常相對容易從那里追溯以了解什么是null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM