带有INSERT存储过程的C#\ r \ n问题

时间:2010-10-29 09:25:59

标签: sql sql-server tsql

基本上我有一个非常简单的插入语句

INSERT INTO [dbo].[ORDER]
    (ORDER_DATE
    ,ORDER_TYPE_ID
    ,PAYMENT_STATUS_ID
    ,TOTAL_COST
    ,SENDER_NAME
    ,SENDER_EMAIL
    ,SENDER_MESSAGE
    ,RECIPIENT_NAME
    ,RECIPIENT_ADDRESS)
VALUES
    (@ORDER_DATE
    ,@ORDER_TYPE_ID
    ,@PAYMENT_STATUS_ID
    ,@TOTAL_COST
    ,@SENDER_NAME
    ,@SENDER_EMAIL
    ,@SENDER_MESSAGE
    ,@RECIPIENT_NAME
    ,@RECIPIENT_ADDRESS)

C#代码中输入的地址是:

Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetStoredProcCommand("sp_ORDER_INSERT");

db.AddInParameter(cmd, "@ORDER_DATE", DbType.DateTime, this._orderDate);
db.AddInParameter(cmd, "@ORDER_TYPE_ID", DbType.Int32, this._typeOfOrder.OrderTypeId);
db.AddInParameter(cmd, "@PAYMENT_STATUS_ID", DbType.Int32, this._statusOfPayment.PaymentStatusId);
db.AddInParameter(cmd, "@TOTAL_COST", DbType.Decimal, this._totalCost);
db.AddInParameter(cmd, "@SENDER_NAME", DbType.String, this._senderName);
db.AddInParameter(cmd, "@SENDER_EMAIL", DbType.String, this.SenderEmail);
db.AddInParameter(cmd, "@SENDER_MESSAGE", DbType.String, this._senderMessage);
db.AddInParameter(cmd, "@RECIPIENT_NAME", DbType.String, this._recipientName);
db.AddInParameter(cmd, "@RECIPIENT_ADDRESS", DbType.String, this._recipientAddress);

this._orderId = Convert.ToInt32(db.ExecuteScalar(cmd));            
cmd.Dispose();

this._recipientAddress中的值是"address line 1 \r\naddress line2\r\n\r\naddressline3"

的字符串

无论如何,当我将其插入SQL时,它删除了'\ r \ n'并且我不想要它,因为这将在稍后显示,我想要换行。

RECIPIENT_ADDRESS数据库列是nText

有人有任何想法吗?

3 个答案:

答案 0 :(得分:1)

"address line 1 \r\naddress line2\r\n\r\naddressline3"

在SQL中将是:

SELECT 'address line 1 ' + CHAR(13) + CHAR(10) 
          + 'address line2'  + CHAR(13) + CHAR(10) 
          + CHAR(13) + CHAR(10) 
          + 'addressline3'

答案 1 :(得分:1)

当结果窗格设置为在Grid中显示时,基本上它可以工作,但在SQL Management Studio中不显示,需要将其设置为在文本中显示。

当我在C#中进行选择时,然后查看\ r \ n仍在数据中的数据。

CHAR(13)+ CHAR(10)自动添加到数据库,但它们在网格视图中不可见,就像你做'SELECT CHAR(13)+ CHAR(10)'你什么也得不到。

干杯球员

答案 2 :(得分:0)

您只需在存储过程

中替换'\ n'和'\ r'即可

INSERT INTO [dbo]。[订购]     (订购日期     ,ORDER_TYPE_ID     ,PAYMENT_STATUS_ID     ,总成本     ,发件者姓名     ,SENDER_EMAIL     ,SENDER_MESSAGE     ,收件人姓名     ,RECIPIENT_ADDRESS) VALUES     (@订购日期     @ ORDER_TYPE_ID     @ PAYMENT_STATUS_ID     ,@总成本     ,@发件者姓名     @ SENDER_EMAIL     @ SENDER_MESSAGE     ,@收件人姓名     ,REPLACE(REPLACE(@RECIPIENT_ADDRESS,'\ r',CHAR(13),'\ n',CHAR(10))