2012-06-20 91 views
-2

我正在使用以下行來在數據庫中存儲字符串,但目前無法將其存儲爲單個字符串。每次在字符串中遇到逗號時,它都會在數據庫表中創建一個新行。無法在數據庫中使用逗號存儲字符串

cmd.Parameters.AddWithValue("@ImageURL", String.Join(",", img.ToArray())); 

這是怎麼回事?

這是多麼我已經定義的表:

@ImageURL VARCHAR(max) 

AS 
BEGIN 
    SET NOCOUNT ON added to prevent extra result sets from 
    interfering with SELECT statements. 
    SET NOCOUNT ON; 


    Insert statements for procedure here 
    insert into 
    DECLARE @String VARCHAR(100) 

    SET @String =''    

    IF(LEN(@Images)>0)   
    BEGIN   
     DELETE FROM Business_images WHERE [email protected]   
    END   

    WHILE LEN(@ImageURL) > 0    
    BEGIN   
    SET @String = LEFT(@ImageURL, ISNULL(NULLIF(CHARINDEX(',', @ImageURL) - 1, -1), LEN(@ImageURL)))    
    SET @ImageURL = SUBSTRING(@ImageURL, ISNULL(NULLIF(CHARINDEX(',', @ImageURL), 0), LEN(@ImageURL)) + 1, LEN(@ImageURL)) 

    insert into Images(ImageURL) values (@String) 
    END 
END 
+0

什麼是'img'的類型?查詢或存儲過程的源代碼是什麼? –

+1

_「創建一個新行」_ O_o什麼是您的命令查詢? – Otiel

+0

如果你使用.NET 4.0,您可以用'的string.join( 「」 IMG)'(如果'img'類型爲IEnumerable的'') –

回答

3
string specialString = "this is silly, string,,not so special''special"; 
using (SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand command = new SqlCommand("Insert into t1 (col1) VALUES (@parame)")) 
    { 
     command.Connection = conn; 
     command.Parameters.AddWithValue("@parame",specialString); 
     command.ExecuteNonQuery(); 
    } 
} 

FYI:我是能夠插入到SQL Server。在我的情況col1的類型是nvarchar

+0

這正是我所做的!任何其他想法? –

+3

@MayankPahuja:不,這不完全是你所做的,s_nair使用''CommandType''(http://msdn.microsoft.com/en-us/library/system.data.commandtype。 aspx)'Text',而你(很可能)使用了'StoredProcedure'。 –

+0

在表上定義了一個插入觸發器,它將文本分隔在逗號位置? –

相關問題