在我的sdf文件中选择数据非常慢

时间:2015-07-30 11:06:30

标签: c# visual-studio-2008 compact-framework windows-ce

我正在使用Windows ce 5.0版本的符号Motorola设备上的应用程序,我尝试使用简单的select命令从“sdf”数据库中读取查询。 但结果非常缓慢。

这是我的代码

private SqlCeConnection myCn;
private SqlCeCommand cm;
private SqlCeDataReader dr;

myCn = new SqlCeConnection("Data Source=\Storage Card\PDT_Data.sdf;Max Database Size=4091;Max Buffer Size = 1024;Default Lock Escalation =100;");
cm = myCn.CreateCommand();
cm.CommandText = "SELECT * FROM MainInputFile WHERE BARCODE = " +  txtBarCode;
dr = null;
if (myCn.State != ConnectionState.Open) myCn.Open();
dr = cm.ExecuteReader();
while (dr.Read())
{
 txtBarCode.Text = dr["BARCODE"].ToString();
 txtItemInformation.Text = dr["DESCRIPTION"].ToString();
 txtItemInformation.Text += "\r\n" + dr["BYUM"].ToString();
 txtItemInformation.Text += "\r\n" + dr["ITEMSKU"].ToString();
 txtItemInformation.Text += "\r\n" + dr["SALEPRIC"].ToString();
}

请任何人都可以帮助我。

1 个答案:

答案 0 :(得分:2)

考虑将索引添加到您的压缩数据库,它实际上很简单:

string command = "Create NONCLUSTERED INDEX BARCODE_INDEX ON MainInputFile(BARCODE)";
SqlCeCommand cmd = new SqlCeCommand(command, GetConnection());
cmd.ExecuteNonQuery();

设备上的数据库操作通常很昂贵,如果您有大量数据,请务必正确添加索引。

同样,Martheen指出:将数据库操作与UI分开。