C# 如何将标签值插入MS Access表?
嗨,我想在ms access中将标签中的值插入到表中。 我已经为textbox和它的存储做过了,但是对于Label,当我尝试存储它时,没有显示错误,但是它没有存储在数据库中,我应该怎么做?我正在使用以下代码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
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)
?