在我的学习过程中,我再次碰壁。 基本上我正在从数据库中读取记录并将其分配给变量,以便我以后可以在表单上使用它。 下面是我正在使用的代码的一部分:
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);
然而,当它显示它显示空白时,就像它没有从课堂上读取。我在读完数据库后立即尝试了一个消息框,它正在选择正确的值,它只是没有将其传递出去用于其他地方。请问我做错了什么或错过了什么。
感谢。
答案 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)更多行返回
{
//阅读数据
}