내가 그들 모두를 표시하는 것과 같은 난 단지 (200)를 표시 할 레코드를 제한하고있는 순간는 SQLite 데이터베이스에 진행 표시 줄이 C#
아래의 코드를 사용하여 ListView에 내로 sqlite3를 데이터베이스에 테이블에서 데이터를 읽고 있습니다 읽어 구현 너무 오래 걸립니다. (약 30,000 레코드)
모든 레코드를 표시하고 모든 레코드를로드 할 수 있도록 옵션을 선택하면 옵션을 제공하고 싶습니다.
시간이 오래 걸리며 진행 상태 표시 줄을 사용하여 상태를 표시하고 싶습니다.
진행률 표시 줄을 사용한 적이 없으므로 어떻게 작동하는지 알 수 없습니다. 진행 막대를 사용할 수 있도록 코드에 몇 줄의 코드를 추가하는 것이 좋을까요 아니면 스레드를 사용해야하고 배경 작업자를 사용해야할까요?
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);
}
}
쿼리를 두 번 실행 중이므로이 줄 명령은 필요하지 않습니다 .ExecuteNonQuery() ;. dataAdaptor.Fill (dataset, "dataset_name"); 쿼리를 실행합니다 – Jmyster
@Jmyster 그 점을 지적 해 주셔서 감사합니다 – Daniel