2014-06-24 97 views
-1

在我的存儲過程,第一,我插入查詢,然後有SELECT語句如下:如何執行存儲過程包含INSERT和SELECT語句都

 INSERT() 

     SELECT * FROM preferences WHERE [email protected] 

在ADO.NET中,我已經使用 - 的DataReader執行這個程序。

但是,它不返回SELECT值,甚至沒有執行INSERT statemnt。

任何人都可以告訴我這裏有什麼錯?

CODE:

   strSPROC = "sproc_SaveAndRetrieve" 
      Using cmd As New Data.SqlClient.SqlCommand 
       cmd.CommandText = strSPROC 
       cmd.CommandType = Data.CommandType.StoredProcedure 
       cmd.Parameters.Clear() 
       cmd.Parameters.AddWithValue("@tvp", CreateDatatableFromCollection(s, isValueOn)) 
       cmd.Parameters.AddWithValue("@GroupID", syGroupID) 

       Using myReader As SqlDataReader = DBManager.GetDataReader(cmd) 
        If myReader.HasRows Then 
         NotFoundRecords= New List(Of String) 
         While myReader.Read() 
          NotFoundRecords.Add(DataHelper.GetString(myReader, "Student")) 
         End While 
        End If 

        Return NotFoundRecords 
        myReader.Close() 
       End Using 
      End Using 

感謝,同時從SQL Server手動執行

程序工作文件。

+0

請出示的代碼。 ExecuteReader執行StoredProcedure並返回最後一條SELECT語句產生的結果集 – Steve

+0

添加了有問題的詳細信息。 – user3711357

回答

1

如果這甚至沒有執行插入,那麼你需要捕捉錯誤。

try 
{ 
    ... 
} 
catch (SqlException ex) 
{ 
    Debug.WriteLine(ex.message); 
} 
finally 
{ 
    // close connection 
} 

select應該在NextResultSet中,但需要先修復插入。您不顯示DataHelper.GetString。
該插入將返回一個整數而不是一個字符串。
我不相信你的陳述,沒有例外拋出。
.NET將報告一個SQL錯誤。
即使該插入影響0行,你應該得到0.
如果失敗,那麼你應該得到一個異常。
如果它在SSMS中插入行但不在.NET中(並且不會引發錯誤),那麼您在.NET中不會執行相同的參數。

DataHelper.GetString(myReader,「Student」))做什麼?
NotFoundRecords只是一個字符串列表。

這是非常可疑的
首先語句應該返回一個int

While myReader.Read() 
    NotFoundRecords.Add(DataHelper.GetString(myReader, "Student")) 
End While 

我希望像在網應用程序中使用這個

myReader.Read() 
int rowInserted = myReader.GetInt32() 
myReader.NextResultSet() 
while myReader.Read() 
    string sss = myReader.GetString() 
End While 
myReader.Close() 
+0

爲什麼要投票?該插入甚至沒有執行。該聲明失敗。你還有什麼要確定失敗的原因? – Paparazzi

+0

過程是在SQL服務器中工作的文件,在.NET中也不例外。我已更新問題的細節。 – user3711357

+0

如果這在.NET中失敗了,那麼.NET會拋出一個錯誤。程序不會默默失敗。您是否按照我在答案中所述的方式嘗試了嘗試?我沒有看到你分配連接的位置,更不用說打開連接。你投下了票嗎? – Paparazzi

相關問題