![](/img/trans.png)
[英]can't read field info from access database when using OleDbDataReader in C#
[英]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.