使用Ms access 2010的C#数据库应用程序

使用Ms access 2010的C#数据库应用程序,c#,C#,我正在C#上开发一个数据库应用程序,在我的香水店使用MS Access,我在MS Access中创建了一个名为“MIX”的表,有列(品牌名称、库存数量、零售价格、原价)。我想通过我创建的C#窗口表单添加他们的字段 我正在尝试以下插入数据的查询,但每次都出现错误“INSERT INTO语句中的语法错误” 四件事: 在连接值时,不需要string.Format 带空格的列名必须用方括号括起来: string str = "Insert into MIX " + "([Br

我正在C#上开发一个数据库应用程序,在我的香水店使用MS Access,我在MS Access中创建了一个名为“MIX”的表,有列(品牌名称、库存数量、零售价格、原价)。我想通过我创建的C#窗口表单添加他们的字段

我正在尝试以下插入数据的查询,但每次都出现错误“INSERT INTO语句中的语法错误”

四件事:

  • 在连接值时,不需要
    string.Format
  • 带空格的列名必须用方括号括起来:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values('" + textBox1.Text + "'," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text + ")";
    
  • 您应该学习如何使用参数而不是连接SQL:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values (?,?,?,?)");
    OleDbCommand cmd = new OleDbCommand(str,con);
    cmd.Parameters.AddWithValue("brand",textBox1.Text);
    ... repeat for other values
    
  • 您似乎正在重用共享的
    OleDbConnection
    对象。这不是一个最佳实践,因为连接是在.NET中汇集的,并且在第一次使用后重新创建很便宜,而且您不必担心在应用程序的整个生命周期中保持连接打开
  • 四件事:

  • 在连接值时,不需要
    string.Format
  • 带空格的列名必须用方括号括起来:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values('" + textBox1.Text + "'," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text + ")";
    
  • 您应该学习如何使用参数而不是连接SQL:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values (?,?,?,?)");
    OleDbCommand cmd = new OleDbCommand(str,con);
    cmd.Parameters.AddWithValue("brand",textBox1.Text);
    ... repeat for other values
    
  • 您似乎正在重用共享的
    OleDbConnection
    对象。这不是一个最佳实践,因为连接是在.NET中汇集的,并且在第一次使用后重新创建很便宜,而且您不必担心在应用程序的整个生命周期中保持连接打开
  • 四件事:

  • 在连接值时,不需要
    string.Format
  • 带空格的列名必须用方括号括起来:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values('" + textBox1.Text + "'," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text + ")";
    
  • 您应该学习如何使用参数而不是连接SQL:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values (?,?,?,?)");
    OleDbCommand cmd = new OleDbCommand(str,con);
    cmd.Parameters.AddWithValue("brand",textBox1.Text);
    ... repeat for other values
    
  • 您似乎正在重用共享的
    OleDbConnection
    对象。这不是一个最佳实践,因为连接是在.NET中汇集的,并且在第一次使用后重新创建很便宜,而且您不必担心在应用程序的整个生命周期中保持连接打开
  • 四件事:

  • 在连接值时,不需要
    string.Format
  • 带空格的列名必须用方括号括起来:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values('" + textBox1.Text + "'," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text + ")";
    
  • 您应该学习如何使用参数而不是连接SQL:

    string str = "Insert into MIX " + 
                 "([Brand name],[Stock quantity],[Retail price],[Original price]) " + 
                 "Values (?,?,?,?)");
    OleDbCommand cmd = new OleDbCommand(str,con);
    cmd.Parameters.AddWithValue("brand",textBox1.Text);
    ... repeat for other values
    
  • 您似乎正在重用共享的
    OleDbConnection
    对象。这不是一个最佳实践,因为连接是在.NET中汇集的,并且在第一次使用后重新创建很便宜,而且您不必担心在应用程序的整个生命周期中保持连接打开

  • 这是一个非常糟糕的主意,因为这些值被直接放入查询中,但您遇到的问题是多词列名:

    Insert into MIX([Brand name],Stock quantity,Retail price,Original price)
    
    这些需要有括号围绕:

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])[
    

    这是一个非常糟糕的主意,因为这些值被直接放入查询中,但您遇到的问题是多词列名:

    Insert into MIX([Brand name],Stock quantity,Retail price,Original price)
    
    这些需要有括号围绕:

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])[
    

    这是一个非常糟糕的主意,因为这些值被直接放入查询中,但您遇到的问题是多词列名:

    Insert into MIX([Brand name],Stock quantity,Retail price,Original price)
    
    这些需要有括号围绕:

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])[
    

    这是一个非常糟糕的主意,因为这些值被直接放入查询中,但您遇到的问题是多词列名:

    Insert into MIX([Brand name],Stock quantity,Retail price,Original price)
    
    这些需要有括号围绕:

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])[
    

    您需要在方括号[]中括起包含空格的列名。此外,还需要使用参数,而不是像那样将值连接到SQL查询。谷歌“SQL注入攻击”要知道原因

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])Values(?,?,?,?)
    
    您可以用以下方式替换这些值:

    cmd.Parameters.AddWithValue("?", Textbox1.text);
    cmd.Parameters.AddWithValue("?", Textbox2.text);
    cmd.Parameters.AddWithValue("?", Textbox3.text);
    cmd.Parameters.AddWithValue("?", Textbox4.text);
    

    请注意顺序很重要。

    您需要在方括号[]中包含空格的列名。此外,还需要使用参数,而不是像那样将值连接到SQL查询。谷歌“SQL注入攻击”要知道原因

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])Values(?,?,?,?)
    
    您可以用以下方式替换这些值:

    cmd.Parameters.AddWithValue("?", Textbox1.text);
    cmd.Parameters.AddWithValue("?", Textbox2.text);
    cmd.Parameters.AddWithValue("?", Textbox3.text);
    cmd.Parameters.AddWithValue("?", Textbox4.text);
    

    请注意顺序很重要。

    您需要在方括号[]中包含空格的列名。此外,还需要使用参数,而不是像那样将值连接到SQL查询。谷歌“SQL注入攻击”要知道原因

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])Values(?,?,?,?)
    
    您可以用以下方式替换这些值:

    cmd.Parameters.AddWithValue("?", Textbox1.text);
    cmd.Parameters.AddWithValue("?", Textbox2.text);
    cmd.Parameters.AddWithValue("?", Textbox3.text);
    cmd.Parameters.AddWithValue("?", Textbox4.text);
    

    请注意顺序很重要。

    您需要在方括号[]中包含空格的列名。此外,还需要使用参数,而不是像那样将值连接到SQL查询。谷歌“SQL注入攻击”要知道原因

    Insert into MIX([Brand name],[Stock quantity],[Retail price],[Original price])Values(?,?,?,?)
    
    您可以用以下方式替换这些值:

    cmd.Parameters.AddWithValue("?", Textbox1.text);
    cmd.Parameters.AddWithValue("?", Textbox2.text);
    cmd.Parameters.AddWithValue("?", Textbox3.text);
    cmd.Parameters.AddWithValue("?", Textbox4.text);
    

    请注意订单很重要。

    谢谢斯坦利。它起作用了。事实上,我对MS access和C#还不熟悉。我希望我能从中学到很多。@user3043233很高兴它能起作用-是的,在使用命令时,有几个“最佳实践”,不幸的是,大多数教程中都没有教授这些“最佳实践”。祝你学习顺利!谢谢你,斯坦利。它起作用了。事实上,我对MS access和C#还不熟悉。我希望我能从中学到很多。@user3043233很高兴它能起作用-是的,在使用命令时,有几个“最佳实践”,不幸的是,大多数教程中都没有教授这些“最佳实践”。祝你学习顺利!谢谢你,斯坦利。它起作用了。事实上,我对MS access和C#还不熟悉。我希望我能从中学到很多。@user3043233很高兴它能起作用-是的,在使用命令时,有几个“最佳实践”,不幸的是,大多数教程中都没有教授这些“最佳实践”。祝你学习顺利!谢谢你,斯坦利。它起作用了。事实上,我对MS access和C#还不熟悉。我希望我能从中学到很多。@user3043233很高兴它能起作用-是的,在使用命令时,有几个“最佳实践”,不幸的是,大多数教程中都没有教授这些“最佳实践”。祝你学习顺利!请出示t