繁体   English   中英

从SQL本地数据库向全局双精度变量返回值

[英]Return value from SQL local database to global double variable

我正在尝试从SQL Server本地数据库中获取数据。 我创建了具有1列buyEURrate类型float的表,并且表名是CurrencyRates我具有全局double变量,并且我试图将其值设置为与FormLoad上CurrencyRates的buyEURrate列中的第一行相同,所以下面的代码在里面FormLoad。 我真的是C#SQL新手。

我正在使用Visual Studio 2012,这是Windows窗体应用程序

 using (SqlCeConnection conn =
    new SqlCeConnection(@"Data Source=C:\Users\FluksikartoN\Documents\Visual Studio 2012\Projects\BuroFoki\BuroFoki\MainDB.sdf"))
    using (SqlCeCommand cmd = conn.CreateCommand())
    {
        conn.Open();
        //commands represent a query or a stored procedure       
        cmd.CommandText = "SELECT buyEURrate FROM CurrencyRates";
        using (SqlCeDataReader rd = cmd.ExecuteReader())
        {
          while (rd.Read())
                {
                    EURbuy = Convert.ToDouble(rd[0]);
                    EURsell = Convert.ToDouble(rd[1]);
                     //Index was outside the bounds of the array. error

                }Table
        }
        conn.Close();
    }

这样的事情应该工作:

using (SqlCeConnection conn =
new SqlCeConnection(@"Data Source=C:\Users\FluksikartoN\Documents\Visual Studio 2012\Projects\BuroFoki\BuroFoki\MainDB.sdf"))
using (SqlCeCommand cmd = conn.CreateCommand())
{
    conn.Open();
    //commands represent a query or a stored procedure       
    cmd.CommandText = "SELECT buyEURrate FROM CurrencyRates";
    using (SqlCeDataReader rd = cmd.ExecuteReader())
    {
       while(rd.Read())
       {
           double variable = Convert.ToDouble(rd[0]);
           string foo = rd.GetString[1];
           //do something with variable and foo before going to next row in query
       }
    }
    conn.Close();
}

这可能也可以

double variable = rd.GetDouble(0);

尽管我不是100%确定GetDouble是像GetString()这样的实际函数,

编辑
double variable = rd.GetDouble(0)检查后, double variable = rd.GetDouble(0)将拉动第一列数据为double

using (SqlCeConnection  conn = new SqlCeConnection ("Server=.;Database=Northwind;User Id=sa;Password=as"))
{
    using (SqlCeCommand  cmd = conn.CreateCommand())
    {
        conn.Open();
        //commands represent a query or a stored procedure       
        cmd.CommandText = "SELECT buyEURrate FROM CurrencyRates";
        using (SqlCeDataReader rd = cmd.ExecuteReader())
        {
            double rate = 0;
            if (rd.Read()) // if datareader has rows
            {
                rate = Convert.ToDouble(rd[0]);
            }
        }
        conn.Close();
    }
}

尝试这个:

 using (SqlCeConnection conn =
new SqlCeConnection(@"Data Source=C:\Users\FluksikartoN\Documents\Visual Studio 2012\Projects\BuroFoki\BuroFoki\MainDB.sdf"))
using (SqlCeCommand cmd = conn.CreateCommand())
{
    conn.Open();
    //commands represent a query or a stored procedure       
    cmd.CommandText = "SELECT buyEURrate FROM CurrencyRates";
    using (SqlCeDataReader rd = cmd.ExecuteReader())
    {
         if(rd.Read())
        {
           double variable = rd.GetDouble(0);
        }
    }
    conn.Close();
}

您首先需要使用DataReader读取一个元组,如果它返回true,则可以继续阅读并读取实际数据。

如果您非常确定要精确读取表的第一个元组的第一列,则也可以使用cmd.ExecuteScalar()方法。

这是MSDN上的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM