web-dev-qa-db-ja.com

クエリの複数行にわたるSQL文字列値

[〜#〜] update [〜#〜]:バイオにはアポストロフィを含めることができます(更新例を参照)

複数行にわたる値を持つSQLクエリがあり、クエリが失敗します。

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

C#では、@文字列の前Bio=@"..."複数行にまたがるようにしていますが、SQLクエリで同じことがどのように達成できるかわかりません。文字列を手動で連結するなどのことをせずに、複数の行にまたがる文字列を取得するにはどうすればよいですか?

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

SQL Serverでは次のことができます(二重ではなく単一引用符を使用するように注意してください)

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

vARCHARを使用して、長さも指定する必要がある場合があります。通常は、

テキストを取得して、それを刺し、それをクエリに入れるのはどうですか

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

壊れた

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

その後使用

       /* 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');");

これがいくつかの助けになることを願っています...

[〜#〜] note [〜#〜]各文字列は

'"+stringname+"'

srtingの複数行要素を有効にする「and」です。これがない場合は、最初の行だけを取得します。行全体を取得してもわからない場合は、最初のWordのみです

0
Henry Aspden

列「BIO」データ型とは何ですか?どのデータベースサーバー(sql/Oracle/mysql)?列のデータ型の文字制限(つまり、varchar(200))を順守している限り、必要な複数の行にまたがることができるはずです。一重引用符を使用してみてください。違いが生じる場合があります。これは私のために働く:

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

また、C#でSQL文字列を連結する場合は、一重引用符のチェックを入れたい場合があります。そのため、SQLステートメントからコードをエスケープする可能性のある単一引用符が変数に含まれている場合、期待するすべての行を実行しません。

ところで、FYIと同様に、C#で行うようにセミコロンでSQLステートメントを区切ることができます。

0
Losbear