it-swarm.com.de

SQL-Zeichenfolgenwert, der mehrere Zeilen in der Abfrage umfasst

UPDATE: Die Bio kann Apostrophe enthalten (siehe aktualisiertes Beispiel)

Ich habe eine SQL-Abfrage mit einem Wert, der sich über mehrere Zeilen erstreckt und dazu führt, dass die Abfrage fehlschlägt:

UPDATE User SET UserId=12345, Name="J Doe", Location="USA", Bio="I'm a
bio that has an apostrophe, and I'm 
spanning multiple lines!" 
WHERE UserId=12345

In C # können Sie einen @ vor die Zeichenfolge [email protected]"..." setzen, um mehrere Zeilen umfassen zu können. Ich bin jedoch nicht sicher, wie mit SQL-Abfragen dasselbe erreicht werden kann. Wie erhalten Sie einen String, der sich über mehrere Zeilen erstreckt, ohne die Strings manuell verketten zu müssen: 

Bio="I'm a"
+" bio that has an apostrophe, and I'm"
+" spanning multiple lines!" 
26
Kiril

SQL Server ermöglicht Folgendes (verwenden Sie bitte einfache Anführungszeichen anstelle von doppelten Werten)

UPDATE User
SET UserId = 12345
   , Name = 'J Doe'
   , Location = 'USA'
   , Bio='my bio
spans 
multiple
lines!'
WHERE UserId = 12345
44
Adam Wenger

bei Ihrem VARCHAR müssen Sie möglicherweise auch die Länge oder die Länge angeben, die normalerweise gut ist

Was halten Sie davon, den Text zu packen, einen Stich daraus zu machen und ihn dann in die Abfrage zu stellen

String TableName = "ComplicatedTableNameHere";  
EditText editText1 = (EditText) findViewById(R.id.EditTextIDhere); 
String editTextString1 = editText1.getText().toString();  

HERUNTERGEBROCHEN

String TableName = "ComplicatedTableNameHere";            
    //sets the table name as a string so you can refer to TableName instead of writing out your table name everytime

EditText editText1 = (EditText) findViewById(R.id.EditTextIDhere); 
    //gets the text from your edit text fieldfield 
    //editText1 = your edit text name
    //EditTextIDhere = the id of your text field

String editTextString1 = editText1.getText().toString();  
    //sets the edit text as a string
    //editText1 is the name of the Edit text from the (EditText) we defined above
    //editTextString1 = the string name you will refer to in future

dann benutze

       /* Insert data to a Table*/
       myDB.execSQL("INSERT INTO "
         + TableName
         + " (Column_Name, Column_Name2, Column_Name3, Column_Name4)"
         + " VALUES ( "+EditTextString1+", 'Column_Value2','Column_Value3','Column_Value4');");

Hoffe das hilft etwas was ...

NOTEJeder String ist innerhalb 

'"+stringname+"'

es ist das 'und', das das mehrzeilige Element des Satzes aktiviert, ohne dass Sie nur die erste Zeile erhalten, nicht einmal sicher, ob Sie die gesamte Zeile erhalten, es kann nur das erste Wort sein

0
Henry Aspden

Was ist die Spalte "BIO" Datentyp? Welcher Datenbankserver (SQL/Oracle/MySQL)? Sie sollten in der Lage sein, sich über mehrere Zeilen zu erstrecken, solange Sie die Zeichenbegrenzung im Datentyp der Spalte einhalten (z. B. varchar (200)) . Das funktioniert für mich:

update table set mycolumn = 'hello world,
my name is carlos.
goodbye.'
where id = 1;

Wenn Sie die SQL-Zeichenfolge in C # zusammenfassen, sollten Sie auch Prüfungen für einfache Anführungszeichen durchführen. Wenn die Variable einfache Anführungszeichen enthält, durch die der Code aus der SQL-Anweisung herauskommen könnte, sollten Sie nicht alle Zeilen ausführen, die Sie erwartet hatten.

Übrigens, Sie können Ihre SQL-Anweisungen wie in C # mit einem Semikolon abgrenzen, genau wie bei FYI.

0
Losbear