我試圖用foreach
循環向表中插入幾行數據,當我編寫內聯SQL時,它似乎工作正常;只有foreach循環中的第一個存儲過程才能工作,但是內聯查詢會如何? C#
connection.Open();
foreach (Bet bet in bets)
{
string insertQuery = "insert into BetTbl (FixtureId,BetTime,UserName,PlayerId) values (@FixtureId, @BetTime, @UserName, @PlayerId)";
SqlCommand command = new SqlCommand(insertQuery, connection);
command.Parameters.AddWithValue("@FixtureId", bet.FixtureId);
command.Parameters.AddWithValue("@BetTime", bet.BetTime);
command.Parameters.AddWithValue("@UserName", bet.User);
command.Parameters.AddWithValue("@PlayerId", bet.PlayerId);
command.ExecuteNonQuery();
}
bets.Clear();
connection.Close();
但是當我嘗試使用存儲過程時出現錯誤;
過程或函數InsertBets有太多的參數指定
下面是代碼:
connection.Open();
foreach (Bet bet in bets)
{
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "InsertBets";
command.Parameters.AddWithValue("@FixtureId", bet.FixtureId);
command.Parameters.AddWithValue("@BetTime", bet.BetTime);
command.Parameters.AddWithValue("@UserName", bet.User);
command.Parameters.AddWithValue("@PlayerId", bet.PlayerId);
command.ExecuteNonQuery();
}
bets.Clear();
connection.Close();
這裏是存儲過程:
CREATE PROCEDURE [dbo].[InsertBets]
@FixtureId VARCHAR(50),
@BetTime VARCHAR(25),
@UserName NVARCHAR(20),
@PlayerId VARCHAR(25)
AS
INSERT INTO dbo.BetTbl (FixtureId, BetTime, UserName, PlayerId)
VALUES (@FixtureId, @BetTime, @UserName, @PlayerId)
雖然它的工作原理使用內聯SQL,我無法弄清楚爲什麼它不能使用存儲過程重新,誰能告訴我爲什麼?謝謝
你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already /),並停止使用'.AddWithValue()' - 它可能會導致意想不到的和令人驚訝的結果... –