2010-10-29 4 views
3

Fondamentalement, j'ai une instruction d'insertion très simple quiC# avec INSERT procédure stockée r n problème

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) 

L'entrée d'adresse dans le code C# est:

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(); 

La valeur Quoi qu'il en soit, quand j'insère ceci dans SQL, je retire le '\ r \ n' et je ne le veux pas car cela sera affiché plus tard et je veux que la ligne aks.

La colonne de base de données RECIPIENT_ADDRESS est nText

Quelqu'un at-il des idées?

Répondre

1

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

Dans SQL serait:

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

Fondamentalement, il a travaillé, mais ne montre pas dans SQL Management Studio lorsque le volet résultat est configuré pour afficher dans la grille, besoin de le mettre à afficher dans le texte.

Lorsque je fais une sélection en C#, alors voir les données que les \ n \ n sont encore dans les données. Les CHAR (13) + CHAR (10) sont ajoutés automatiquement à la base de données, mais ils ne sont pas visibles dans la vue Grid, comme si vous avez fait 'SELECT CHAR (13) + CHAR (10)' vous n'obtenez rien .

Vive les gars

0

Vous pouvez simplement remplacer les '\ n' et '\ r' dans la procédure stockée

INSERT INTO [dbo]. [Commande] (ORDER_DATE , ORDER_TYPE_ID , PAYMENT_STATUS_ID , total_cost , SENDER_NAME , SENDER_EMAIL , SENDER_MESSAGE , RECIPIENT_NAME , RECIPIENT_ADDRESS) VALEURS (@ORDER_DATE , @ ORDER_TYPE_ID , @ PAYMENT_STATUS_ID , @ total_cost , @ SENDER_NAME , @ SENDER_EMAIL , @ SENDER_MESSAGE , @ RECIPIENT_NAME , REPLACE (REMPLACER (@RECIPIENT_ADDRESS, '\ r', CHAR (13), « \ n ', CHAR (10))

Questions connexes