C# 我正在尝试根据选择在Access DB中插入数据
请参阅附件,我写的代码,但当它运行时,当我在表单n中输入数据时,单击“提交”,在C# 我正在尝试根据选择在Access DB中插入数据,c#,C#,请参阅附件,我写的代码,但当它运行时,当我在表单n中输入数据时,单击“提交”,在“Command.executenonquery statement”中会出现错误 它显示处理错误的无效操作异常 namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent();
“Command.executenonquery statement”
中会出现错误
它显示处理错误的无效操作异常
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\databses\electric_data.accdb";
OleDbCommand command = new OleDbCommand();
command.CommandText = "INSERT INTO Electric_Data (Asset_Id,Asset_Name,Emp_Id,Type_of_Asset,Actual_Start_date) VALUES (?,?,?,?,?)";
command.Parameters.Add("@Asset_Id", OleDbType.VarChar, 20).Value = textBox1.Text;
command.Parameters.Add("@Asset_Name", OleDbType.Char, 20).Value = textBox2.Text;
command.Parameters.Add("@Type_of_Asset", OleDbType.VarChar, 20).Value = textBox3.Text;
command.Parameters.Add("@Emp_Id", OleDbType.Char, 20).Value = textBox4.Text;
command.Parameters.Add("@Actual_Start_date", OleDbType.Date).Value = DateTime.Now;
command.ExecuteNonQuery();
conn.Open();
command.Connection = conn;
MessageBox.Show("Entry Registered Successfully.");
}
if (radioButton2.Checked == true)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\databses\electric_data.accdb";
OleDbCommand command = new OleDbCommand();
command.CommandText = "INSERT INTO Electric_Data (Asset_Id,Asset_Name,Emp_Id,Type_of_Asset,Actual_end_date) VALUES (?,?,?,?,?)";
command.Parameters.Add("@Asset_Id", OleDbType.VarChar, 20).Value = textBox1.Text;
command.Parameters.Add("@Asset_Name", OleDbType.Char, 20).Value = textBox2.Text;
command.Parameters.Add("@Emp_Id", OleDbType.VarChar, 20).Value = textBox3.Text;
command.Parameters.Add("@Type_of_Asset", OleDbType.VarChar, 20).Value = textBox4.Text;
command.Parameters.Add("@Actual_end_date", OleDbType.Date).Value = DateTime.Now;
command.ExecuteNonQuery();
conn.Open();
command.Connection = conn;
MessageBox.Show("Entry Registered Successfully.");
}
else if (radioButton1.Checked == false && radioButton2.Checked == false)
MessageBox.Show("Check Work_Start or Work_Complete option for successful Entry.");
}
}
}
你把conn.Open()放错地方了。试试--> 旁白:
编辑:command.CommandText根据其他学者的回答也错误。您的命令文本完全错误。用参数名称更改问号:
command.CommandText = "INSERT INTO Electric_Data (Asset_Id,Asset_Name,Emp_Id,Type_of_Asset,Actual_Start_date) VALUES (@Asset_Id,@Asset_Name,@Emp_Id,@Type_of_Asset,@Actual_end_date)";
在ExecuteOnQuery之后,您将打开连接,首先打开连接,然后执行查询
conn.Open();
command.Connection = conn;
command.ExecuteNonQuery();
尝试此插入查询。删除
?,?,,?,?
command.CommandText = "INSERT INTO Electric_Data (Asset_Id,Asset_Name,Emp_Id,Type_of_Asset,Actual_Start_date) VALUES (@Asset_Id,@Asset_Name,@Emp_Id,@Type_of_Asset,@Actual_end_date)";
检查表列的数据类型值(?、、?、?、?)您故意将参数名称更改为“?”?yesw,以便可以使用多个数据进行输入,但您不能这样做。无论您添加什么,它都应该具有参数名。在执行查询之前还要打开连接。我尝试了仍然相同的错误“{”ExecuteOnQuery:connection属性尚未初始化。“}”它给出了一个新的错误“{”条件表达式中的数据类型不匹配。“资产Id、资产名称、Emp Id、资产类型都是varchar(20)/实际的资产结束日期是数据库中的日期吗?”?
command.CommandText = "INSERT INTO Electric_Data (Asset_Id,Asset_Name,Emp_Id,Type_of_Asset,Actual_Start_date) VALUES (@Asset_Id,@Asset_Name,@Emp_Id,@Type_of_Asset,@Actual_end_date)";