我需要一些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();
Jon Skeet.. 5
只是为了将我的评论扩展到一个答案 - 我觉得这样做的方向是错误的.我会将设计更改为(有点伪代码):
void FindUserOrRegister() { User user = GetUserFromDatabase(); if (user != null) { new MainApplicationForm(user).Show(); } else { new RegistrationForm().Show(); } }
然后可能将RegistrationForm
逻辑调用FindUserOrRegister
作为其注册流程的一部分 - 如果用户选择关闭表单,那么整个应用程序应该关闭(大概)...但是否则,当注册完成时,您可以关闭表单然后FindUserOrRegister
再次调用,然后将启动主窗体.
或者,注册表可以在注册完成后直接启动主申请表.
我有点在猜测你想在这里做什么,但我不认为它至少值从UI流分离的数据库代码-因为它并试图做到这一点更事件驱动的方式,是否应该继续进行更改的用户.如果您正在等待其他人向数据库添加记录,那么您最好使用某种计时器重复查询数据库(在后台线程中 - 线程是您需要了解的另一个区域,以避免您的你在查询数据库时挂起UI,顺便说一句,但在这里我认为你不需要它.
只是为了将我的评论扩展到一个答案 - 我觉得这样做的方向是错误的.我会将设计更改为(有点伪代码):
void FindUserOrRegister() { User user = GetUserFromDatabase(); if (user != null) { new MainApplicationForm(user).Show(); } else { new RegistrationForm().Show(); } }
然后可能将RegistrationForm
逻辑调用FindUserOrRegister
作为其注册流程的一部分 - 如果用户选择关闭表单,那么整个应用程序应该关闭(大概)...但是否则,当注册完成时,您可以关闭表单然后FindUserOrRegister
再次调用,然后将启动主窗体.
或者,注册表可以在注册完成后直接启动主申请表.
我有点在猜测你想在这里做什么,但我不认为它至少值从UI流分离的数据库代码-因为它并试图做到这一点更事件驱动的方式,是否应该继续进行更改的用户.如果您正在等待其他人向数据库添加记录,那么您最好使用某种计时器重复查询数据库(在后台线程中 - 线程是您需要了解的另一个区域,以避免您的你在查询数据库时挂起UI,顺便说一句,但在这里我认为你不需要它.