读取并保留SQL数据以供在课外使用

时间:2014-02-18 21:32:27

标签: c#

在我的学习过程中,我再次碰壁。 基本上我正在从数据库中读取记录并将其分配给变量,以便我以后可以在表单上使用它。 下面是我正在使用的代码的一部分:

    public static class Configuration
{
    public static string ConfigurationFile { get; set; }
    public static string day_BackEnable { get; set; }
    public static string Day_BackTime { get; set; }
    public static string day_FileKeep { get; set; }
    public static string day_NotifyIcon { get; set; }
    public static string day_Error { get; set; }


    static Configuration()
    {
        ConfigurationFile = @"C:\testapp\cfg\testapp.sdf";
        ReadConfigFile();
    }

    public static void Reload()
    {
        ReadConfigFile();
    }

    private static void ReadConfigFile()
    {
        string day_BackEnable = "";
        string Day_BackTime = "";
        string day_FileKeep = "";
        string day_Error = "";
        string day_NotifyIcon = "";

        SqlCeConnection conn = null;
        try
        {
            using (conn = new SqlCeConnection("Data Source =" + ConfigurationFile + "; Password =****"))
            {
                conn.Open();
                SqlCeCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from n_BackupMain";
                cmd.ExecuteNonQuery();
                var reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    day_BackEnable = (reader[9].ToString());
                    Day_BackTime = (reader[11].ToString());
                    day_FileKeep = (reader[10].ToString());
                    day_NotifyIcon = (reader[12].ToString());
                    day_Error = (reader[13].ToString());
                }
                reader.Close();
            }
        }
        finally
        {
            conn.Close();
        }
    }
}

然后我只是把它叫到一个这样的消息框:

MessageBox.Show(day_filekeep);

然而,当它显示它显示空白时,就像它没有从课堂上读取。我在读完数据库后立即尝试了一个消息框,它正在选择正确的值,它只是没有将其传递出去用于其他地方。请问我做错了什么或错过了什么。

感谢。

2 个答案:

答案 0 :(得分:1)

问题是您已为类成员和本地变量分配了相同的名称。

执行此操作时,分配将首先默认为本地变量,即ReadConfigFile方法中的。

要解决此问题,只需删除ReadConfigFile方法中声明的变量,然后填充实际课程中的static成员。

以下是一个如何运作的简单示例:

public class Test
{
    static string test = ""; // class member

    public void TestTest()
    {
        // if you comment the below declaration out, 
        // then the right "test" will be assigned
        string test = "";  // local member 
        test = "hello"; // the local member is being assigned, not the class member
    }

    public void  GetTest()
    {
        // This will print "test is: [blank]" because the class member 
        // "test" was never assigned to
        Console.WriteLine("Test is:" + test); ;
    }
}

答案 1 :(得分:0)

这里有两次错误:
                cmd.ExecuteNonQuery();                 var reader = cmd.ExecuteReader();

    SqlDataReader dbReader = mySqlCommand.ExecuteReader();
      //如果读者有行值
       if(dbReader.HasRows)// while(xxx)更多行返回
        {
           //阅读数据
        }