2015-11-30 36 views
0

我想獲得一個回車符插入到Oracle數據庫與C#的情況發生,但我似乎無法得到它正確的。C#和Oracle回車

我知道它的CHR(13),但是當我在字符串上運行替換時,它將替換我用來標記回車的特定字符,但是當插入發生時它會與「CHR(13)」的回車。

這是我在用的:

txt = txt.Replace("|", "' ||CHAR(13)|| '"); 

我自己也嘗試設置變量,並給它CHAR(13),但結果相同的calue。

INSERT INTO people (id, first_name, last_name, txt) VALUES ('" + id + "', '" + record.first_name + "', '" + record.last_name + "', '" + txt + "')"; 

輸出:

INSERT INTO people (cust_sid, first_name, last_name, notes) VALUES ('10', 'steve', 'man','thisistext ||CHR(13)|| 07, more:more, ||CHR(13)') 

任何人都可以讓我知道我做錯了。

感謝,

+0

你能告訴更多的代碼,最好最終的查詢在執行之前?而且它不應該是'CHR(13)''而不是CHAR(13)'? – GolezTrol

+1

你在建立一個動態查詢嗎?如果'txt'作爲參數傳遞,所有你需要做的就是'txt.Replace(「|」,「\ r」)'。 – Luaan

+0

是的,它是CHR(13)我也試過,但是CHAR(13)在這裏發佈了另一篇文章,所以我想我也會試試它。 @Luaan TXT作爲字符串來處理該INSERT語句 – RobertC

回答

0

你的問題是最後的 '|'在txt的末尾。對此進行分類並做你想做的事情是絕對有可能的,但正如其他人在評論中所說的那樣,請不要這樣做。

考慮,如果你的變量txt包含以下內容:

He'll do just fine 

你打算怎麼處理'性格,更重要的是你真的想要?

綁定變量就像培根 - 他們讓一切變得更加美好:

// OracleConnection conn; 

int id = 1; 
string txt = "this is text|more:more, |"; 

OracleCommand cmd = new OracleCommand(
    "insert into people (id, first_name, last_name, txt) values " + 
    "(:ID, :FIRST, :LAST, :TXT)", conn); 

cmd.Parameters.Add("ID", id); 
cmd.Parameters.Add("FIRST", "steve"); 
cmd.Parameters.Add("LAST", "man"); 
cmd.Parameters.Add("TXT", txt.Replace("|", Environment.NewLine)); 

cmd.ExecuteNonQuery(); 

如果你將不是一個單一的記錄越多,你會想,一旦做到這一點有點不同(聲明參數,執行多個次數不同的值),但是相同的基本概念將適用。