Recordset迭代数据库表

时间:2012-08-09 09:45:44

标签: c# asp.net .net sql-server sql-server-2008-r2

我有一个asp.net电子商务应用程序,我在其中添加了Discount的功能:

如果totalPurchase amount >=200, then 5% disc, 如果is >=500, then 7%..喜欢那样。

问题是应该通过管理员登录动态更改折扣%。即我不允许在代码隐藏中编写此代码。

if(totalPurchase>=200 && totalPurchase<700)
{ // code for 5% discount }

我正在尝试实现recorderdet来遍历数据库表Discount,其字段为..

DiscID -1

DiscPer -5

DiscAmount -200 

依旧......

2 个答案:

答案 0 :(得分:1)

我觉得您缺少一个数据库列,用于存储您的折扣金额范围,例如200700等。我假设数据库表名称为Discounts,范围列是AmountFromAmountTo。这是我的解决方案:

OleDbConnection connect = new OleDbConnection();
connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data.accdb;Persist Security Info=False;";
connect.Open();

OleDbCommand command = new OleDbCommand();
command.CommandText = "SELECT AmountFrom, AmountTo, DiscPer FROM Discounts";
command.Connection = connect;

OleDbReader reader = command.ExecuteReader();

while(reader.Read())
{   
    int from = int.Parse(reader['AmountFrom'].toString());
    int to = int.Parse(reader['AmountTo'].toString());
    int discount = int.Parse(reader['DiscPer'].toString());

    if(totalPurchase >= from && totalPurchase < to) {
        MessageBox.Show("You got a discount of " + discount + "%");
    }
}
connect.Close();

答案 1 :(得分:0)

这个问题可以帮助您更好地解决折扣问题Database Design Brainstorming: Sale Prices