簡體   English   中英

C#SQL Server Compact插入解決方案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM