c# - Trouble with data reader -
afternoon, writing database management program make things easier @ work. i'm having trouble datareader if table returns no results. have searched on web solution no avail. eating humble pie , asking.
firstly understand db layout, have multiple tables , want display results in 1 list view. code works fine displaying whole table when trying search no result found in first table throws exception every table within loop. if result found in first table continue loop again until search string not found in each table.
here code
private string _strdbpath; private string _strcontractnumber; public string[] dbtables = new string[9] {"0", "1800", "2800", "4000", "5000", "5400", "5700", "6800", "7800"}; public string[] dbfields = new string[3] { "contractnumber", "name", "ref",}; private enum sqltype {normal, search} private bool dbsearch =false; private void frmrecords_load(object sender, eventargs e) { lstcontractsaddcolums(); timerstart.start(); } private void lstcontractsaddcolums() { lstcontracts.columns.clear(); (int = 0; < dbfields.length; i++) //check see if last field in array lstcontracts.columns.add(dbfields[i], 200, horizontalalignment.left); } private void timerstart_tick(object sender, eventargs e) { (int = 0; < dbtables.length; i++) { while (!dbsearch == false) { } dbgetdata(i, sqltype.search, "1000", "contractnumber"); dbsearch = false; } timerstart.stop(); } private void dbgetdata(int dbtable, sqltype sqlrecords, string strsearch, string strfield) { string mysql = "select "; (int = 0; < dbfields.length; i++) //check see if last field in array if (i < dbfields.length - 1) { mysql = mysql + dbfields[i] + ", "; //this not last field } else { mysql = mysql + dbfields[i] + " "; //this last field (no commor required) } switch (sqlrecords) { case sqltype.normal: mysql = mysql + " " + dbtables[dbtable] + " order contractnumber"; //adds last part of sayntex break; case sqltype.search: mysql = mysql + " " + dbtables[dbtable] + " " + strfield + " = " + strsearch; //adds last part of sayntex break; default: mysql = mysql + " " + dbtables[dbtable] + " order contractnumber"; //adds last part of sayntex break; } connstr = @"provider=microsoft.ace.oledb.12.0;data source=" + strdbpath + ";jet oledb:database password="; //selects database along provider of database try { using(oledbconnection myconn = new oledbconnection(connstr) ) { myconn.open(); //opens myconn oledbcommand cmd = new oledbcommand(mysql, myconn); oledbdatareader objreader = cmd.executereader(); if (!objreader.hasrows) { messagebox.show("no rows found"); } else { while (objreader.read()) { listviewitem item = new listviewitem(objreader[dbfields[0].tostring()].tostring()); (int = 1; < dbfields.length; i++) //check see if last field in array item.subitems.add(objreader[dbfields[i]].tostring()); lstcontracts.items.add(item); } } dbsearch = true; objreader.close(); cmd.dispose(); myconn.close(); } } catch (exception ex) { oerrorlog.writeerrorlog(ex.tostring()); dbsearch = true; } { dbsearch = true; } } it's silly advise help.
Comments
Post a Comment