[英]C# SQL Server Compact Insert solution
我正在嘗試將數據插入SQL Server CE本地數據庫,但是遇到我無法解決的問題。
foreach (var player in cells)
{
var sql = new SqlCeConnection(
@"Data Source=H:\Repositories\NHL-Connected\NHLConnected\NHLScraper\app.sdf");
try
{
sql.Open();
var cmd =
new SqlCeCommand("INSERT INTO Players (PlayerID, PlayerName, Team_Abbreviation) Values ( '" +
player.ID.Replace("/ice/player.htm?id=", null) + "," + player.Name + "," +
player.Team + "')", sql);
int affectedRows = cmd.ExecuteNonQuery();
if (affectedRows > 0) Console.WriteLine("Successful.");
else Console.WriteLine("Failed.");
}
catch (SqlCeException ex)
{
Console.WriteLine(ex.Message);
}
}
我遇到的異常/錯誤是
列名和源表達式的計數不匹配[列名計數= 3,源表達式計數= 1]
我不確定我是否做得正確。
請指教。
您只是放錯了位置而忘記了一些單引號,這導致了一個字符串值。 也許您應該重新考慮如何構造sql代碼並改為使用參數:
嘗試這樣的事情:
var cmd = new SqlCeCommand(
"INSERT INTO Players (PlayerID, PlayerName, Team_Abbreviation) VALUES (@ID, @Name, @Team);", sql);
cmd.Parameters.AddWithValue("@ID", player.ID.Replace("/ice/player.htm?id=", null));
cmd.Parameters.AddWithValue("@Name", player.Name);
cmd.Parameters.AddWithValue("@Team", player.Team);
您將所有內容合而為一'“'” <-它認為它是一欄
try
{
var cmd = new SqlCeCommand("INSERT INTO Players (PlayerID, PlayerName, Team_Abbreviation) Values (@PlayerID,@PlayerName,@Team_Abbreviation)", sql);
cmd.Parameters.AddWithValue("@PlayerID", PlayerIDTxt);
cmd.Parameters.AddWithValue("@PlayerName", PlayerNameTxt);
cmd.Parameters.AddWithValue("@Team_Abbreviation", Team_AbbreviationTxt);
cmd.Open();
int affectedRows = cmd.ExecuteNonQuery();
cmd.Close();
}
catch
{
}
您要插入單引號作為額外的字符,如下所示:
new SqlCeCommand("INSERT INTO Players (PlayerID, PlayerName, Team_Abbreviation) Values ( '" +
player.ID.Replace("/ice/player.htm?id=", null) + "," + player.Name + "," +
player.Team + "')", sql);
應該 :
new SqlCeCommand("INSERT INTO Players (PlayerID, PlayerName, Team_Abbreviation) Values(player.ID.Replace("/ice/player.htm?id=", null) + ",'" + player.Name + "','" +
player.Team + "')", sql);
嘗試在變量中添加“`”,因此它們是3個不同的變量
player.ID.Replace("/ice/player.htm?id=", null) + "," + player.Name + "," +
player.Team + "')", sql);
在上面的代碼中,您必須以1`開始,而要以1結尾,每個變量都需要一個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.