簡體   English   中英

C#使用OleDbDataReader從Access數據庫獲取值

[英]c# using OleDbDataReader to get value from Access database

我正在為學校項目建立圖書館系統,而我已經在借閱系統中工作了。 我的數據庫中有一列顯示“可用”,基本上它會說這本書是“借來的”,“保留的”還是“可用的”,而我正在嘗試使用以下方法從我的訪問數據庫中獲取“可用”的值OleDb軟件包,但仍然無法使用。

private void btnBorrows_Click(object sender, EventArgs e)
    {
        string connectionString = @"Provider=Microsoft Office 12.0 Access Database Engine OLE DB Provider;" + @"Data source= C:\Users\Administrator\Desktop\dtbase\Database1.accdb";

        string queryString = "SELECT * FROM Books";
        string Av = string.Empty;
        try
        {
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                OleDbCommand command = new OleDbCommand(queryString, connection);
                connection.Open();
                OleDbDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Av = reader.["Availability"].ToString();
                }

                if (Av == "Available")
                {
                command.Connection = connection;
                command.CommandText = "insert into AuditTrail (MemberID, MemberName, BookID, BookTitle, DateBorrowed, ReturnDate, Status) values ('" + txtbxMId.Text + "', '" + txtbxMN.Text + "', '" + txtbxBookId.Text + "', '" + txtbxBookTitle.Text + "', '" + txtbxDateNow.Text + "', '" + txtbxReturn.Text + "', '" + txtbxStatus.Text + "')";

                command.ExecuteNonQuery();
                MessageBox.Show("Borrowed!");
                }
                else
                {
                    MessageBox.Show("This Book Is Already Borrowed.");
                }
                reader.Close();
                connection.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Failed to connect to data source" + ex);
        }

如您所見,我想到的第一件事是if else語句,我不知道我使用的軟件包是否錯誤,因為每次運行程序時,即使可用性為“可用”。

我的計划是,如果該書是“借用的”或“保留的”,則用戶不能“借用”或“保留”它,但如果書是“可用的”,則用戶可以借用它。 我實際上嘗試了另一種方法

if (Av == "Borrowed" || Av == "Reserved")
   {
      MessageBox.Show("The Book is Already Borrowed.");
   }
else
   {
      //Do the thing
   }

但總會說“書已經借了”

我知道這已經很老了,我確定您現在已經解決了,但是...如果不實際查看就無法確定...但是如果您有多行/記錄,我想它總是返回“借用”,因為您的SELECT語句中沒有過濾器或WHERE子句。 因此它將始終顯示第一條記錄。

暫無
暫無

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

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