2013-10-03 16 views
1

我有一個方法向SQL Server過程發送兩個變量,一個int和一個分隔字符串。當通過ASP.NET 3.5插入到表中時返回異常C#方法

變量值(從調試器複製):

detailId: 5 
fileNames: "recruiter.txt|cert.pdf" 

的方法:

public void InsertFiles(int detailId, string fileNames) 
{ 
    ConnectionStringSettings connString = ConfigurationManager.ConnectionStrings["PRADB"]; 
    using (SqlConnection conn = new SqlConnection(connString.ToString())) 
    { 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = conn; 
     cmd.CommandText = "dbo.InsertFiles"; 
     cmd.Parameters.AddWithValue("@detailId", detailId); 
     cmd.Parameters.AddWithValue("@fileNames", fileNames); 
     try 
     { 
      conn.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      string exc = ex.ToString(); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 
} 

這裏是PROC:

ALTER PROCEDURE [dbo].[InsertFiles] 
@detailId int, 
@fileNames varchar(max) 

AS 
BEGIN 

SET NOCOUNT ON; 

insert into [dbo].[PRA_Files] (detailId, fileNames) 
    values (@detailId, @fileNames) 
END 

調試時的異常接收的:

{"Incorrect syntax near 'dbo'."} 

然而,當我從PROC執行:

exec [dbo].[InsertFiles] 5, "recruiter.txt|cert.pdf" 

它工作正常。錯誤不在代碼端,因爲它被捕獲到上面方法的catch塊中。我很難過。

回答

5

您需要指定命令是一個存儲過程:

SqlCommand cmd = new SqlCommand(); 
cmd.Connection = conn; 
cmd.CommandText = "dbo.InsertFiles"; 
cmd.Parameters.AddWithValue("@detailId", detailId); 
cmd.Parameters.AddWithValue("@fileNames", fileNames); 
cmd.CommandType = CommandType.StoredProcedure; 
+0

啊你剛纔打我給它。 :-) –

+2

即將發佈相同的東西。把我抓出來那麼多次;) –

+0

doh。謝謝D.憎恨簡單的錯誤,永遠找不到它們。 –

相關問題