Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将标签值插入MS Access表?_C#_Asp.net_Database_Ms Access_Label - Fatal编程技术网

C# 如何将标签值插入MS Access表?

C# 如何将标签值插入MS Access表?,c#,asp.net,database,ms-access,label,C#,Asp.net,Database,Ms Access,Label,嗨,我想在ms access中将标签中的值插入到表中。 我已经为textbox和它的存储做过了,但是对于Label,当我尝试存储它时,没有显示错误,但是它没有存储在数据库中,我应该怎么做?我正在使用以下代码 static OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\New folder\Project 1.0\WebSite1\New Microsoft

嗨,我想在ms access中将标签中的值插入到表中。 我已经为textbox和它的存储做过了,但是对于Label,当我尝试存储它时,没有显示错误,但是它没有存储在数据库中,我应该怎么做?我正在使用以下代码

static OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\New folder\Project 1.0\WebSite1\New Microsoft Office Access 2007 Database.accdb");
    OleDbDataAdapter ada = new OleDbDataAdapter();
    OleDbCommand cmd = new OleDbCommand();
    OleDbDataReader dr;


protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            string str = "insert into Orders (Products, Amount)" + " values (@p1, @p2)";
            con.Open();
            cmd = new OleDbCommand(str, con);
            cmd.Parameters.AddWithValue("@p1", Label18.Text);
            cmd.Parameters.AddWithValue("@p2", Label16.Text);
            cmd.ExecuteNonQuery();
            con.Close();
        }
        catch
        {
            Console.WriteLine("Exception Occured");
        }
        finally
        {
            if (con != null && con.State != ConnectionState.Closed)
            { con.Close(); }
        }
    }
此外,我还尝试将textbox值存储到“Address”列下的同一个表“Orders”中,但面临上述相同问题……该表不会更新。我以前曾将此代码用于其他文本框等不同的表,效果很好

static OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\New folder\Project 1.0\WebSite1\New Microsoft Office Access 2007 Database.accdb");
    OleDbDataAdapter ada = new OleDbDataAdapter();
    OleDbCommand cmd = new OleDbCommand();
    OleDbDataReader dr;

 protected void Button1_Click(object sender, EventArgs e)
    {

        {
            string str = "insert into Orders (Address)" + " values (@p1)";
            con.Open();
            cmd = new OleDbCommand(str, con);
            cmd.Parameters.AddWithValue("@p1", TextBox1.Text);
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
OLE DB.NET提供程序不支持用于传递的命名参数 SQL语句的参数

试一试

   string str = "insert into Orders (Products, Amount) values (?,?)";
您可以按如下所示更改代码

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\New folder\Project 1.0\WebSite1\New Microsoft Office Access 2007 Database.accdb"))
        using (OleDbCommand cmd = new OleDbCommand("insert into Orders (Products, Amount) values (?,?)", con))
        {
            cmd.Parameters.AddWithValue("@p1", Label18.Text);
            cmd.Parameters.AddWithValue("@p2", int.Parse(Label16.Text));
            con.Open();
            int no = cmd.ExecuteNonQuery();

            Console.WriteLine("number of rows affected = " + no);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception Occured :" ex.ToString());
    }
}

代码似乎是正确的。你能用调试器检查一下这两个标签的文本吗?label18=Ashrwad Atta 1KG,Label16=32@user2211486数据库中金额列的数据类型是什么?数字。我将其从文本更改为数字,以表示尝试的数量,没有错误,但更改不会反映在数据库中:(未找到sqlConnection和SqlCommand的类型或名称空间:(INVLATE token“using”在类中,Label16/18是一个字段,但它的用法与类型类似。@user2211486问题可能是由于金额字段的类型造成的,您可以尝试使用
int.Parse(Label16.Text)
Decimal.Parse(Label16.Text)
也尝试过
int.Parse(Label16.Text)