簡體   English   中英

'。'附近的語法不正確 SQL插入C#

[英]Incorrect syntax near '.' SQL INSERT c#

我正在嘗試使用Object類將新記錄添加到SQL數據庫表中。 我創建了一個產品列表,然后使用sql語句遍歷所有產品。

我的代碼是這樣的:

    private void backupButton_Click(object sender, RoutedEventArgs e)
    {
        ReadAllProductsList dbproducts = new ReadAllProductsList();
        DB_Product = dbproducts.GetAllProducts();
        List<Product> SQLProductList = new List<Product>();
        SQLProductList = DB_Product.Where(Product => Product.UserId == currentUser).ToList();
        for(int i = 0; i < SQLProductList.Count; i++)
        {
            InsertSQLProduct(new Product(SQLProductList[i].UserId,
                                                        SQLProductList[i].Name));

        }
    }

    public void InsertSQLProduct(Product objProduct)
    {
        using (var connection = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated Security=SSPI;database=MyLocalDB"))
        {
            connection.Open();
            using (SqlCommand command = new SqlCommand("INSERT INTO Product (UserId, Name) '" +
                                                        "'VALUES (null, '" + objProduct.Name + "');", connection))
            {
                command.ExecuteNonQuery();
            }

        }
    }

產品類如下所示:

public class Product
{

    // List<DietId> Lst = new List<DietId>();
    //The Id property is marked as the Primary Key  
    [SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement]
    public int Id { get; set; }
    public string UserId { get; set; }
    public string CreationDate { get; set; }
    public string Name { get; set; }




    public override string ToString()
    {
        return Name;
    }

    public Product()
    {
        //empty constructor  
    }

    public Product(string userId, string name)
    {
        UserId = userId;

        CreationDate = DateTime.Now.ToString();

        Name = name;

    }
}

但是,在命令中顯示以下錯誤:

'。'附近的語法錯誤

我在這里做錯了什么?

PS。 SQL中的名稱為VARCHAR類型。

編輯:我已經使用參數並將字符串轉換為varchar,現在我得到了不同的錯誤:

字符串或二進制數據將被截斷。 該語句已終止

好。 排序。

最后一個錯誤告訴我該列僅接受1個字符,因為VARCHAR默認為1。

我用記錄的新最大輸入重新創建了表。

使用參數解決了我原來的問題。

感謝大伙們。

"INSERT INTO Product (UserId, Name) '" +
"'VALUES (null, '" + objProduct.Name + "');",

還有多余的撇號:一個在第一行的結尾,一個在第二行的開頭。

另外,使用參數可以有意或無意地避免SQL注入攻擊。 可能會導致錯誤,具體取決於objProduct.Name的值。

您有多余的單引號。 您的SQL查詢可以INSERT INTO Product (UserId, Name) ''VALUES (null, 'name')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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