我正在使用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();
}
请任何人都可以帮助我。
答案 0 :(得分:2)
考虑将索引添加到您的压缩数据库,它实际上很简单:
string command = "Create NONCLUSTERED INDEX BARCODE_INDEX ON MainInputFile(BARCODE)";
SqlCeCommand cmd = new SqlCeCommand(command, GetConnection());
cmd.ExecuteNonQuery();
设备上的数据库操作通常很昂贵,如果您有大量数据,请务必正确添加索引。
同样,Martheen指出:将数据库操作与UI分开。