C# 用C语言将SQL Server连接到货币转换器

C# 用C语言将SQL Server连接到货币转换器,c#,sql,asp.net,stored-procedures,C#,Sql,Asp.net,Stored Procedures,因此,我正在构建一个网站,该网站匹配一些用户提供的数据,并使用存储过程在中继器中显示结果。我的数据库当前包含诸如ProductName、ProductDescription、ProductPrice等列。数据库将价格存储在AUD中。用户希望我构建一个货币转换器,单击该转换器时,会将整个页面的货币更改为INR,因此,如果中继器在当前页面上显示100条记录,则每个记录都将被更改 我尝试使用link在项目中集成googleapi,但它并没有改变repeater中所有行的货币。我应该为这个我认为太多的特

因此,我正在构建一个网站,该网站匹配一些用户提供的数据,并使用存储过程在中继器中显示结果。我的数据库当前包含诸如ProductName、ProductDescription、ProductPrice等列。数据库将价格存储在AUD中。用户希望我构建一个货币转换器,单击该转换器时,会将整个页面的货币更改为INR,因此,如果中继器在当前页面上显示100条记录,则每个记录都将被更改

我尝试使用link在项目中集成googleapi,但它并没有改变repeater中所有行的货币。我应该为这个我认为太多的特定操作构建一个新的存储过程,还是可以将这个操作与中继器集成

PS:不使用ASP MVC。根据用户的需求构建Web表单应用程序

中继器代码:

中继器的后端:

私有void GetData { SqlConnection con=新建SqlConnectionConfiguration Manager.ConnectionString[siecConnectionString].ConnectionString; 利用骗局 { DataTable dt=新的DataTable; SqlCommand cmd=newsqlcommandnewquery,con; cmd.CommandType=CommandType.storedProcess; cmd.Parameters。AddWithValue@Name,lbl1.文本; cmd.Parameters。AddWithValue@Desc,lbl2.Text; cmd.Parameters。AddWithValue@Price,lbl3.Text; SqlDataAdapter da=新的SqlDataAdaptercmd; da.Filldt; rp1.DataSource=dt; rp1.DataBind; } } 存储过程:我正在检查用户提供的值是否为null,如果为null,则显示与其余参数匹配的所有行,否则显示与当前参数匹配的行。这个程序运行得非常好

创建过程NewQuery @名称NVARCHAR50=NULL, @Desc NVARCHAR50=NULL, @价格INT=NULL 像 开始 不计数; 从产品中选择产品名称、产品描述、产品价格 其中@Name='NULL'或类似于“%”的ProductName+CAST@Name作为NVARCHAR+“%” 和 @Desc='NULL'或类似“%”的ProductDescription+CAST@Desc作为NVARCHAR+“%” 和
@Price='0'或ProductPrice我建议您将其放入数据的转发器Get中,您可以循环返回的数据。这是一个选择

    private void GetData()
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["siecConnectionString"].ConnectionString);
        using (con)
        {
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand("NewQuery", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Name", lbl1.Text);
            cmd.Parameters.AddWithValue("@Desc", lbl2.Text);
            cmd.Parameters.AddWithValue("@Price", lbl3.Text);

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);

            decimal conversionRate = 1; // THIS IS QUERY YOU'D GET THE RATE

            foreach(DataRow row in dt.Rows)
            {
                row["Price"] = Convert.ToDecimal(row["Price"]) * conversionRate;
            }

            rp1.DataSource = dt;
            rp1.DataBind();
        }
    }

另一种选择是将其作为一个额外参数传递到存储过程中,然后从存储过程返回,方法是将数据库中的价格乘以,并将其作为每条记录的价格返回。如果选择选项2,则会将参数设置为可选,默认值为1,因此如果未传入,则会得到原始值。

旁注:官方汇率和新货币的最终价格几乎从来都不一样:转换货币需要金钱。然而,如何处理这一问题仍有待讨论;你可以直接给客户兑换,也就是说,用指定的货币向他们收取费用,自己承担费用,或者用你当地的货币向他们收取费用,让他们或他们的银行承担费用。这忽略了一些奇怪的事情,比如需要为买方所在国增加额外的费用/税收……我完全同意。我在采访一些潜在用户时已经注意到了这些问题。因为市场的任何变化都可能对最终用户产生巨大影响。但我无法删除一个重要功能。不过谢谢你的评论