繁体   English   中英

插入到ms Access数据库

[英]insert into a ms access database

我正在用Windows窗体c#实现一个litel程序,该程序将数据保存在ms ACCESS数据库中。 我写这段代码

OleDbConnection connect = new OleDbConnection();
    private void button1_Click(object sender, EventArgs e)
    {
        connect.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Zied\Documents\Visual Studio 2010\Projects\testerMSAcceess\testerMSAcceess\bin\Debug\zimed.mdb";
        string fname = textBox1.Text;
        string lname = textBox2.Text;

        connect.Open();
        OleDbCommand cmd = new OleDbCommand(" INSERT INTO user ([nom],[prenom]) VALUES (@fname,@lname)",connect);



        if (connect.State == ConnectionState.Open)
        {
            cmd.Parameters.AddWithValue("@fname", fname);
            cmd.Parameters.AddWithValue("@lname", lname);

            cmd.ExecuteNonQuery();
            MessageBox.Show("ajout ok ");
            connect.Close();
            try
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("ajout ok ");
                connect.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("erreur" + ex.Source);
                connect.Close();
            }

        }
        else
        {
            MessageBox.Show("probleme connection");
        }

    }

并且我在执行它“插入方法中的错误”时收到此错误,我不知道插入请求中的错误。 你有个主意吗

尝试这个。 我在查询字符串中添加了using -statements和[ ] -brackets。

string fname = textBox1.Text;
string lname = textBox2.Text;

using(OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Zied\Documents\Visual Studio 2010\Projects\testerMSAcceess\testerMSAcceess\bin\Debug\zimed.mdb"))
using(OleDbCommand cmd = new OleDbCommand("INSERT INTO [user] ([nom],[prenom]) VALUES (@fname,@lname)", conn))
{
   try
   {
      conn.Open();

      cmd.Parameters.AddWithValue("@fname", fname);
      cmd.Parameters.AddWithValue("@lname", lname);

      cmd.ExecuteNonQuery();

      MessageBox.Show("ajout ok ");
   }

   catch (Exception ex) { MessageBox.Show("Erreur" + ex.Source); }

   finally { if (conn.State == ConnectionState.Open) { conn.Close(); } }
}

OLE DB .NET提供程序使用带有问号(?)而不是命名参数的位置参数。因此,尝试使用? 而不是命名参数。 例如。

INSERT INTO [user] ([nom],[prenom]) VALUES (?,?)

comand.Parameters.Add("nom", OleDbType.VarChar).Value = fname;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM