06. marts 2007 - 10:29Der er
9 kommentarer og 1 løsning
Søge i mysql database
Hej
Jeg skal søge i en mysql database, hvor jeg skal finde nogle brugere med forskellige rettigheder. I databasen er brugerens rettigheder bestemt med en int fra 1 - 5. I min app, er der 5 checkboxes. Når der er 3 checkboxes der er checked, skal jeg søge på feks alle dem der har int 1,3,5. En der kan hjælpe mig med at lave den mysql statement?
Hvor langt kommer du i forsøget? og hvilke problemer render du ind i? Prøv at paste det SQL ind som du allerede har, så kan vi måske hjælpe dig videre.
FillDataGridView("SELECT name,authoritylevel,areacode,country,workphone,workmobile,worktitle,workplace,workemail,picture FROM Employees WHERE " + "name LIKE '%" + txtName.Text + "%' AND " + "areacode LIKE '%" + txtAreaCode.Text + "%' AND " + "country LIKE 'Danmark%' AND " + "workphone LIKE '%" + txtPhone.Text + "%' AND " + "workmobile LIKE '%" + txtMobile.Text + "%' AND " + "worktitle LIKE '%" + txtWorkingTitle.Text + "%' AND " + "workplace LIKE '%Aalborg%' AND " + "workemail LIKE '%" + txtEmail.Text + "%' AND " + "adress LIKE '%" + txtAdress.Text + "%' AND " + "city LIKE '%" + txtCity.Text + "%' AND " + "authoritylevel LIKE '%Her Skal den søge den søge på alle rows der feks indeholder 1,3,5%'");
Og sådan her ser min metode ud, den returnere en string som hedder feks. 134. Så jeg skal have alle dem med i kolonnen authoritylevel der har en int der hedder 1,3 eller 4 med
Okay. Jeg har ikke mulighed for at teste for syntaks fejl, men du burde kunne komme videre med dette her:
char[] acceslevels = GetAccessLevel().ToString().ToCharArray(); string sql = ""; sql = @"SELECT name,authoritylevel,areacode,country,workphone,workmobile,worktitle,workplace,workemail,picture FROM Employees WHERE " + "name LIKE '%" + txtName.Text + "%' AND " + "areacode LIKE '%" + txtAreaCode.Text + "%' AND " + "country LIKE 'Danmark%' AND " + "workphone LIKE '%" + txtPhone.Text + "%' AND " + "workmobile LIKE '%" + txtMobile.Text + "%' AND " + "worktitle LIKE '%" + txtWorkingTitle.Text + "%' AND " + "workplace LIKE '%Aalborg%' AND " + "workemail LIKE '%" + txtEmail.Text + "%' AND " + "adress LIKE '%" + txtAdress.Text + "%' AND " + "city LIKE '%" + txtCity.Text + "%' AND ";
int count = 0; foreach (char c in acceslevels) { if (count == 0) { sql += "authoritylevel LIKE " + c.ToString(); } else { sql += " AND " + c.ToString(); } count++; } sql += ";";
Ja det er noget a la det der... Men når jeg begynder at klikke på de checkboxe, vil den kun vise dem der har int = 1. De andre forsvinder som de skal, når de ikke er checked. Men kommer ikke tilbage når de bliver checked igen.
Her er lidt kode
private void ReFillDataSet() { char[] acceslevels = GetAccessLevel().ToString().ToCharArray(); string sql = ""; sql = @"SELECT name,authoritylevel,areacode,country,workphone,workmobile,worktitle,workplace,workemail,picture FROM Employees WHERE " + "name LIKE '%" + txtName.Text + "%' AND " + "areacode LIKE '%" + txtAreaCode.Text + "%' AND " + "country LIKE 'Danmark%' AND " + "workphone LIKE '%" + txtPhone.Text + "%' AND " + "workmobile LIKE '%" + txtMobile.Text + "%' AND " + "worktitle LIKE '%" + txtWorkingTitle.Text + "%' AND " + "workplace LIKE '%Aalborg%' AND " + "workemail LIKE '%" + txtEmail.Text + "%' AND " + "adress LIKE '%" + txtAdress.Text + "%' AND " + "city LIKE '%" + txtCity.Text + "%' AND ";
int count = 0; foreach (char c in acceslevels) { if (count == 0) { sql += "authoritylevel LIKE " + c.ToString(); } else { sql += " AND " + c.ToString(); } count++; } sql += ";";
FillDataGridView(sql); } private string GetAccessLevel() { string tmp = string.Empty; if (chcSA.Checked == true) tmp += "1"; if (chcAdmin.Checked == true) tmp += "2"; if (chcSU.Checked == true) tmp += "3"; if (chcUser.Checked == true) tmp += "4"; if (chcEmployee.Checked == true) tmp += "5"; if (tmp == string.Empty) tmp = "0"; return tmp; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.