Can';t从C#.NET更新Access数据库文件
我试着用Visual C#学习一些编码。我为添加和更新Access数据库创建了一个表单 我可以成功添加到Access文件,但无法更新它们 我在互联网上搜索时编写了一个类似于下面的代码,但我得到了这个错误: ExecuteOnQuery需要打开且可用的连接。连接的当前状态为关闭 我的代码是:Can';t从C#.NET更新Access数据库文件,c#,.net,ms-access,insert-update,C#,.net,Ms Access,Insert Update,我试着用Visual C#学习一些编码。我为添加和更新Access数据库创建了一个表单 我可以成功添加到Access文件,但无法更新它们 我在互联网上搜索时编写了一个类似于下面的代码,但我得到了这个错误: ExecuteOnQuery需要打开且可用的连接。连接的当前状态为关闭 我的代码是: public partial class form1 : Form { private OleDbConnection con; private void btnUpDate_Click(obj
public partial class form1 : Form
{
private OleDbConnection con;
private void btnUpDate_Click(object sender, EventArgs e)
{
string FirstName = txtFirstName.Text;
string Family = txtFamily.Text;
string City = txtCity.Text;
string approve = txtapprove.Text;
string OfficeNumber = txtOfficeNumber.Text;
string OfficialDossier = txtOfficialDossier.Text;
string Department = txtDepartment.Text;
string Organization = txtOrganization.Text;
OleDbConnection oleDBConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Data Source=F:\\Database.accdb");
string query = "UPDATE Sheet1 SET FirstName=@FirstName, Family=@Family, City=@City, approve=@approve, OfficeNumber=@OfficeNumber, OfficialDossier=@OfficialDossier, Department=@Department, Organization=@Organization WHERE OfficeNumber=@OfficeNumber";
//string query = "UPDATE aspnet_Users SET FirstName=@FirstName, Family=@Family, City=@City, approve=@approve, OfficeNumber=@OfficeNumber, OfficialDossier=@OfficialDossier, Department=@Department WHERE OfficeNumber=@OfficeNumber";
OleDbCommand cmd = new OleDbCommand(query, oleDBConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@OfficeNumber", OfficeNumber);
cmd.Parameters.AddWithValue("@OfficialDossier", OfficialDossier);
cmd.Parameters.AddWithValue("@FirstName", FirstName);
cmd.Parameters.AddWithValue("@Family", Family);
cmd.Parameters.AddWithValue("@City", City);
cmd.Parameters.AddWithValue("@approve", approve);
cmd.Parameters.AddWithValue("@Department", Department);
cmd.Parameters.AddWithValue("@Organization", Organization);
try
{
con.Open();
int result = cmd.ExecuteNonQuery();
if (result > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Sorry!");
}
catch (OleDbException)
{
MessageBox.Show("There is a problem!");
}
finally
{
con.Close();
}
}
}
我哪里有错?我不使用DataSet和DataAdapter。问题出在那里吗
我正在使用VS 2010问题1:您尚未打开分配给
OleDbCommand
对象的连接对象oleDBConn
con.Open();
您已将oleDBConn
分配给OleDbCommand对象,如下所示:
OleDbCommand cmd = new OleDbCommand(query, oleDBConn);//here you have assigned oleDbConn
con.Open();
但是您已经打开了不同的ConnectionObjectcon
,如下所示:
OleDbCommand cmd = new OleDbCommand(query, oleDBConn);//here you have assigned oleDbConn
con.Open();
解决方案1:
try
{
oleDBConn.Open();
int result = cmd.ExecuteNonQuery();
if (result > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Sorry!");
}
catch (OleDbException ex)
{
MessageBox.Show("There is a problem!"+ex.ToString());
}
finally
{
oleDBConn.Close();
}
替换此项:应始终打开分配给OleDbCOmmand
对象的OleDbConnection
(oleDBConn)对象
con.Open();
为此:
oleDBConn.Open();
问题2:您已经创建了一个额外的连接对象con
(在btnUpDate\u单击
功能的顶部)并且错误地使用了该对象。(打开和关闭错误的连接对象,而不是正确的连接对象)
解决方案2:删除在b更新\u单击函数顶部创建的额外连接对象,并将所有con
事件替换为oleDBConn
完整代码:
try
{
oleDBConn.Open();
int result = cmd.ExecuteNonQuery();
if (result > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Sorry!");
}
catch (OleDbException ex)
{
MessageBox.Show("There is a problem!"+ex.ToString());
}
finally
{
oleDBConn.Close();
}
问题1:您尚未打开分配给OleDbCommand
对象的连接对象oleDBConn
con.Open();
您已将oleDBConn
分配给OleDbCommand对象,如下所示:
OleDbCommand cmd = new OleDbCommand(query, oleDBConn);//here you have assigned oleDbConn
con.Open();
但是您已经打开了不同的ConnectionObjectcon
,如下所示:
OleDbCommand cmd = new OleDbCommand(query, oleDBConn);//here you have assigned oleDbConn
con.Open();
解决方案1:
try
{
oleDBConn.Open();
int result = cmd.ExecuteNonQuery();
if (result > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Sorry!");
}
catch (OleDbException ex)
{
MessageBox.Show("There is a problem!"+ex.ToString());
}
finally
{
oleDBConn.Close();
}
替换此项:应始终打开分配给OleDbCOmmand
对象的OleDbConnection
(oleDBConn)对象
con.Open();
为此:
oleDBConn.Open();
问题2:您已经创建了一个额外的连接对象con
(在btnUpDate\u单击
功能的顶部)并且错误地使用了该对象。(打开和关闭错误的连接对象,而不是正确的连接对象)
解决方案2:删除在b更新\u单击函数顶部创建的额外连接对象,并将所有con
事件替换为oleDBConn
完整代码:
try
{
oleDBConn.Open();
int result = cmd.ExecuteNonQuery();
if (result > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Sorry!");
}
catch (OleDbException ex)
{
MessageBox.Show("There is a problem!"+ex.ToString());
}
finally
{
oleDBConn.Close();
}
@用户3346389:你的意思是它总是说“对不起”
?是的!我正确地改变了它。我不能假设出了什么问题@user3346389:您可以调试并查看错误和异常消息吗?抱歉,我无法调试它!我仍然没有到达调试章节:)因为我可以在数据库中添加新行,我认为错误一定是声明的字符串!但我不专业!:)@用户3346389:你的意思是它总是说“对不起”
?是的!我正确地改变了它。我不能假设出了什么问题@user3346389:您可以调试并查看错误和异常消息吗?抱歉,我无法调试它!我仍然没有到达调试章节:)因为我可以在数据库中添加新行,我认为错误一定是声明的字符串!但我不专业!:)