【发布时间】:2012-04-21 18:26:48
【问题描述】:
如何更改:
public void Charge(string bankaccountnumber, decimal moneyamount)
{
foreach (Bankaccount bankaccountInProcess in bankaccount)
{
if (bankaccountnumber == bankaccountInProcess.Bankaccountnumber)
bankaccountInProcess.ChargeFromBankAccount(moneyamount);
}
return;
}
要使用 OleDbDataReader 而不是那个 foreach?
当要求输入要从银行帐户中提取的金额然后从 BalanceAmountAvailableForWithdrawal(以及 WholeAccountBalance)中提取时,在控制台中输入moneyamount。但是access文件中没有moneyamount列,只有WholeAccountBalance和BalanceAmountAvailableForWithdrawal货币列。
以下是我如何在课堂的不同部分更改它的示例:
public bool IdentifyUser(string bankAccountnumber, int passWord)
{
connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\\asd.accdb");
connection.Open();
OleDbCommand getOne = new OleDbCommand();
getOne.Connection = connection;
getOne.CommandText = "SELECT accounNum, pinCode FROM Account WHERE accountNum = '" +
bankAccountnumber +"'";
OleDbDataReader readOne = readOne.ExecuteReader();
if (readOne.Read())
{
int GottenPassWord = (int)readOne["pinCode"];
if (GottenPassWord == passWord)
return true;
}
else
{
Console.WriteLine("Account was not found");
}
connection.Close();
return false;
}
这是我到目前为止的想法:
public void Charge(string bankaccountnumber, decimal moneyamount)
{
connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\\asd.accdb");
connection.Open();
OleDbCommand getOne = new OleDbCommand();
getOne.Connection = connection;
getOne.CommandText = "SELECT accounNum, WholeAccountBalance, BalanceAmountAvailableForWithdrawal FROM Account WHERE accounNum = '" +
bankaccountnumber + "'";
OleDbDataReader readOne = readOne.ExecuteReader();
if (readOne.Read())
{
// i dont know what to put here to make this do the same thing as the foreach did
return;
}
else
{
Console.WriteLine("Charging did not work");
return;
}
}
【问题讨论】:
-
对我来说,不清楚您想要实现什么 - 首先:因为您的示例是用您的母语而不是英语,其次:因为您想使用 @987654324 替换某些“内存中”集合上的导航@loop 和
OleDbDataReader,用于对数据库中的记录进行操作。如果您在数据库中有由您的集合表示的数据,则使用正确的 SELECT 查询从数据库中提取它,就像您在第二个示例中所做的那样(只需使用while (reader.Read())循环来连续读取所有记录)。 -
对不起,现在是英文的。 foreach 之前所做的是它读取帐户数组,其中我拥有所有帐户信息,例如我们的银行帐户号码、余额等,但现在我试图用访问数据库替换它。我希望这有助于理解我在这里问什么。
-
私人账户[] 账户; public BankAccountDatabase() { accounts = new Account[2];账户[0] = 新账户("500500-8080", 1111, 1000m, 1000m); account[1] = new Account("1", 1, 1000m, 2000m); }
标签: c# visual-studio ms-access oledb oledbdatareader