C # с проблемой INSERT хранимой процедуры \ r \ n - PullRequest
4 голосов
/ 29 октября 2010

В основном у меня есть очень простой оператор вставки, который

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 ]

1 голос
/ 29 октября 2010

В основном это работает, но не отображается в SQL Management Studio, когда область результатов настроена для отображения в сетке, необходимо установить для нее значение Отображать в тексте.

Когда я делаю выбор в C #, затем просматриваю данные, \ r \ n все еще находятся в данных.

CHAR (13) + CHAR (10) автоматически добавляются в базу данных, но они не видны в представлении таблицы, как если бы вы сделали «SELECT CHAR (13) + CHAR (10)», вы ничего не получите.

Ура, ребята

1 голос
/ 29 октября 2010

"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'
0 голосов
/ 29 октября 2010

Вы можете просто заменить эти '\ n' и '\ r' в хранимой процедуре

ВСТАВИТЬ В [dbo]. [ЗАКАЗАТЬ] (ДАТА ЗАКАЗА , ORDER_TYPE_ID , PAYMENT_STATUS_ID ,ОБЩАЯ СТОИМОСТЬ ,ИМЯ ОТПРАВИТЕЛЯ , SENDER_EMAIL , SENDER_MESSAGE ,ИМЯ ПОЛУЧАТЕЛЯ , RECIPIENT_ADDRESS) ЦЕННОСТИ (@ДАТА ЗАКАЗА , @ ORDER_TYPE_ID , @ PAYMENT_STATUS_ID ,@ОБЩАЯ СТОИМОСТЬ ,@ИМЯ ОТПРАВИТЕЛЯ , @ SENDER_EMAIL , @ SENDER_MESSAGE ,@ИМЯ ПОЛУЧАТЕЛЯ , ЗАМЕНА (ЗАМЕНА (@RECIPIENT_ADDRESS, '\ r', CHAR (13), '\ n', CHAR (10))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...