Search code examples
c#sqlwinformstextbox

Improve Barcode search in a Textbox C#


In a WinForm C# application I have a Barcode_textbox. In TextChanged event I have an SQL query to check for the TextBox.Text value in the database which is the barcode. The problem is that for each entered digit the SQL Query will be fired, so if a barcode of length 13 it will make 13 check in the database and it is being extremely SLOW.

So, what is the TextBox event that is fired only when the user stops writing in the TextBox (or the barcode reader stpos reading), or what is the optimal solution for checking for a barcode in the database. Note that bacode is of different length


Solution

  • I recall how I did this with success.

    I put Timer control in my application with a Interval of a second (1000 milli's). Then I set the Form.KeyPreview property to True.

    In the Form Key Press event I store the key strokes. In the Timer.Tick event check if the length of the recorded key strokes exceeds 12 or so characters.

    Then fire off the call to SQL, once. When you return a record successfully (or if the textbox contains greater than say 20 chars) clear the stored key strokes.


    See update, as at March 2019: https://stackoverflow.com/a/55411255/495455