Currectly我正在學習和學習,我只是想知道在C#中的這種數據庫連接的一些邏輯。我想知道爲什麼使用while循環我的意思是如果我不使用它,它會影響程序,或者如果我將它取出,程序運行良好。我只是想知道使用它還是從程序中拿出來是明智的。有人可以幫幫我嗎 ??謝謝爲什麼while循環用於此數據庫連接?
private bool filled;
public DataSet ds = new DataSet();
private void bnt_displaylog_Click(object sender, EventArgs e)
{
try
{
string dbconnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Elevator_Database.accdb;";
string dbcommand = "Select * from Log;";
OleDbConnection conn = new OleDbConnection(dbconnection);
OleDbCommand comm = new OleDbCommand(dbcommand, conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(comm);
conn.Open();
//MessageBox.Show("Connection Open ! ");
**while (filled == false)**
{
adapter.Fill(ds);
filled = true;
}
conn.Close();
}
catch (Exception)
{
MessageBox.Show("Can not open connection ! ");
string message = "Error in connection to datasource";
string caption = "Error";
MessageBoxButtons buttons = MessageBoxButtons.OK;
DialogResult result;
result = MessageBox.Show(message, caption, buttons);
}
database_listbox.Items.Clear();
foreach (DataRow row in ds.Tables[0].Rows)
{
database_listbox.Items.Add(row["Date"] + "\t\t" + row["Time"] + "\t\t" + row["Action"]);
}
}
似乎它可以很容易地用'if(!filled)...'替換,除非有其他方法訪問'filled'變量。 – foxanna
我們是否需要循環或如果?看起來程序工作正常,只有這部分「adapter.Fill(ds);」 – Dee21
是的,如果我們想要保持現在的相同行爲,那麼仍然需要'if'。這個代碼第一次運行時,'filled'是'false'。但是代碼運行的* next *時間,'filled'將是'true',除非其他代碼已將其設置回'false'。因此,代碼原樣 - 或更改爲'if' - 只在第一次點擊時運行'adapter.Fill(ds);'。 –