我正在为学校项目建立一个图书馆系统,我已经在借阅系统了。我的数据库中有一列显示“可用性”,基本上会说该书是“借用”,“保留”还是“可用”,我试图从我的访问数据库中获取“可用”值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语句,我不知道我是否使用了包错误,因为每次运行程序时它总是跳到else语句,即使可用性的值是“可用”。
我的计划是,如果该书是“借用”或“保留”,则用户不能“借用”或“保留”它,但如果它是“可用”,则用户可以借用它。我实际上尝试过相反的方式
if (Av == "Borrowed" || Av == "Reserved")
{
MessageBox.Show("The Book is Already Borrowed.");
}
else
{
//Do the thing
}
但它总会说“书已被借用”
答案 0 :(得分:0)
我知道这已经很老了,我确定您现在已经解决了,但是...如果不实际查看就无法确定...但是如果您有多行/记录,我认为是这样由于您的SELECT语句中没有过滤器或WHERE子句,因此始终返回“借用”。因此它将始终显示第一条记录。