2015-07-30 1 views
1

Je travaille sur une application sur le périphérique Motorola, avec la version Windows ce 5.0, et j'essaie de lire une requête depuis la base de données "sdf" avec une simple commande select. mais le résultat est très très lent.La sélection de données dans mon fichier sdf est très lente

ceci est mon code

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(); 
} 

s'il vous plaît quelqu'un peut me aider.

+0

Combien de lignes sont à l'intérieur de la base de données? Avez-vous essayé de coller des fichiers de la \ Storage Card \ vers un autre emplacement? En outre, votre code semble écraser continuellement la zone de texte (?) Pour chaque ligne, l'opération d'interface utilisateur est coûteuse, vous pouvez simplement les stocker dans CSV, tableau ou autre DB au lieu de les afficher dans la zone de texte. – Martheen

+0

c'est à peu près 152284 ligne –

Répondre

2

Pensez à ajouter à votre base de données index compact, sa réalité facile:

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

opérations de base de données sur les appareils sont généralement coûteux, si vous avez beaucoup de données assurez-vous d'ajouter indexer correctement.

De même que Martheen pointait: séparez vos opérations de base de données de l'interface utilisateur.

+0

merci ça marche :) –