Hier mal der Code:
while((line = FileHandler.getNextLine()) != null)
{
char[] strpkt = ";".ToCharArray();
string[] strg = line.Split(strpkt);
string fid = strg[0];
string nachname = strg[1];
string email = strg[2];
string telnr = strg[3];
DataRow[] darray = dsPV.ds.Tables["All"].Select("ID="+fid +" AND Nachname = '"+nachname+"'");
...
danach wird dann die suche ausgewertet.
Wenn ich nun in einem Nachnamen den char ' verwende bricht er mir genau an dem punkt ab und wirft einen fehler (nachfolgender operator nicht gefunden etc.).
nun hab ich versucht den nachnamen halt zu modifizieren und einen escape char davorzusetzen...
nur erkennt dieser Select anscheinend kein \ als escape char oder es muss irgendwie anders gemacht werden.
aus dem was bei msn steht werd ich auch nicht wirklich schlau.
hatte schonmal jemand ein ähnliches problem?
ich denke das nächste ist das @ das mir auch die suche kaputt macht...
gibts den keine möglich kein bei einer Suche mit zB: "Name = 'xyz<?99''"<>m@mn' " was auch immer hier auch genau diesen wert zu finden?
Hallo,
Du kannst den ' escapen, indem Du ihn verdoppelst
also
WHERE name like 'ein''Test'
findet dann den Wert "ein'Test".
Achte aber darauf daß es 2 einzelne ' seuin müssen, nicht der "
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Welche Datenbank benutzt Du denn? Der doppelte ' funktioniert auf jeden Fall bei MS SQL-Server.
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Original von Kentarion
nö, das bringt nix.
Doch die Verdoppelung bringt was wenn man's richtig codiert
DataTable dt=new DataTable();
dt.Columns.Add("Col");
dt.Rows.Add(new object[]{"Meier"});
dt.Rows.Add(new object[]{"D'Angelo"});
dt.Rows.Add(new object[]{"Müller"});
string strSearch="D'Angelo";
//Verdoppeln
strSearch=strSearch.Replace("'","''");
DataRow[] rows=dt.Select(string.Format("Col='{0}'",strSearch));
foreach (DataRow rw in rows)
{
System.Diagnostics.Debug.WriteLine(string.Format("Gefunden: {0}",rw["Col"]));
}
Ausgabe:
Gefunden: D'Angelo
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
kommando zurück, es hat funktioniert - ich hab bei der befüll/ersetzfunktion dann einen kleinen fehler gehabt.
vielen dank!
oh wieso einfach wenns kompliziert geht....
char[] hochstr = "'".ToCharArray();
string[] nstrg = nachname.Split(hochstr);
nachname = null;
nachname = nstrg[0];
for (int i=1; nstrg.Length > i; i++)
{
nachname += "''" + nstrg[i];
}
danke programmierhans - jetzt bin ich wieder um ein stückchen schlauer --> replace...