我從一個表中的sqlite3的數據庫使用下面落實SQLite數據庫進度條讀取C#
代碼目前我限制只記錄200顯示爲顯示所有這些數據讀入一個ListView太長了。 (有些30000條記錄)
我想給顯示所有記錄的選項,如果選擇該選項,能夠加載每個記錄。
正如我所說,它需要相當長的時間,我想用一個進度條來顯示它的狀態。
我從來沒有使用過進度條,所以我不知道它們是如何工作的。是否會在我的代碼中添加一些額外的代碼行以允許使用進度條,還是需要對其進行線程化並使用後臺工作程序?
private void cmdReadDatabase_Click(object sender, EventArgs e)
{
listView4.Columns.Add("Row1", 50);
listView4.Columns.Add("Row2", 50);
listView4.Columns.Add("Row3", 50);
listView4.Columns.Add("Row4", 50);
listView4.Columns.Add("Row5", 50);
listView4.Columns.Add("Row6", 50);
listView4.Columns.Add("Row7", 50);
try
{
string connectionPath = Path.Combine(@"C:\", @"temp\");
SQLiteConnectionStringBuilder csb = new SQLiteConnectionStringBuilder();
csb.DataSource = Path.Combine(connectionPath, "database.db");
SQLiteConnection connection = new SQLiteConnection(csb.ConnectionString);
connection.Open();
// Query to read the data
SQLiteCommand command = connection.CreateCommand();
string query = "SELECT * FROM table_name LIMIT 200 ";
command.CommandText = query;
command.ExecuteNonQuery();
SQLiteDataAdapter dataAdaptor = new SQLiteDataAdapter(command);
DataSet dataset = new DataSet();
dataAdaptor.Fill(dataset, "dataset_name");
// Get the table from the data set
DataTable datatable = dataset.Tables["dataset_name"];
listView4.Items.Clear();
// Display items in the ListView control
for (int i = 0; i < datatable.Rows.Count; i++)
{
DataRow datarow = datatable.Rows[i];
if (datarow.RowState != DataRowState.Deleted)
{
// Define the list items
ListViewItem lvi = new ListViewItem(datarow["Row1"].ToString());
lvi.SubItems.Add(datarow["Row2"].ToString());
lvi.SubItems.Add(datarow["Row3"].ToString());
lvi.SubItems.Add(datarow["Row4"].ToString());
lvi.SubItems.Add(datarow["Row5"].ToString());
lvi.SubItems.Add(datarow["Row6"].ToString());
lvi.SubItems.Add(datarow["Row7"].ToString());
// Add the list items to the ListView
listView4.Items.Add(lvi);
}
}
connection.Close();
}
catch(SQLiteException ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK);
}
}
您正在運行您的查詢兩次,您不需要此行command.ExecuteNonQuery();. dataAdaptor.Fill(dataset,「dataset_name」);將運行查詢 – Jmyster 2012-04-04 17:42:51
@Jmyster感謝您指出了這一點 – Daniel 2012-04-04 17:52:37