c#if else循环

时间:2011-11-06 08:03:47

标签: c# if-statement

我在if else部分需要一些帮助。现在,我的代码显示“if row = 0,user not found”。但我想循环,如果没有检测到任何东西,继续循环,直到事件发生变化。我如何在这里循环?

string strOleDbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Project.mdb";
string strSqlStatement = string.Empty;
strSqlStatement = "SELECT * FROM jiahe WHERE [Tag ID] = '" + txt + "'";
OleDbConnection objConnection = new OleDbConnection(strOleDbConnectionString);
OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSqlStatement, objConnection);
DataSet ds = new DataSet();
objAdapter.Fill(ds);

DataTable dt = ds.Tables[0];
dataGridView1.DataSource = dt.DefaultView;

if (dt.Rows.Count == 0)
{
    MessageBox.Show("Not Found. Please register new user.");
    Form2 frm2 = new Form2();
    frm2.Show();
}
else
{
    string strLine = string.Empty;
    string strUser = string.Empty;

    foreach (DataRow dr in dt.Rows)
    {
        string strTags = dr["Tag ID"].ToString();
        strUser = dr["User"].ToString();
        string strAge = dr["Age"].ToString();
        string strPhoneNumber = dr["Phone Number"].ToString();

1 个答案:

答案 0 :(得分:5)

只是为了将我的评论扩展到一个答案 - 我觉得这样做的方向是错误的。我会将设计更改为(有点伪代码):

void FindUserOrRegister()
{
    User user = GetUserFromDatabase();
    if (user != null)
    {
        new MainApplicationForm(user).Show();
    }
    else
    {
        new RegistrationForm().Show();
    }
}

然后可能RegistrationForm逻辑调用FindUserOrRegister作为其注册流程的一部分 - 如果用户选择关闭表单,则应关闭整个应用程序(大概)...但是否则,当注册完成后,您可以关闭表单然后再次调用FindUserOrRegister,然后启动主表单。

或者,注册表可以在注册完成后直接启动主应用程序。

我有点猜测你在这里要做什么,但我认为它至少值得将数据库代码与UI流分开 - 并尝试在一种更加事件驱动的方式,因为用户将改变你是否应该继续。如果您正在等待其他人将记录添加到数据库中,您可能会更好地使用某种计时器重复查询数据库(在后台线程中 - 线程是您需要的另一个区域了解为了避免在查询数据库时你的UI挂起,顺便说一句,但在这里我认为你不需要。