Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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
Can';t从C#.NET更新Access数据库文件_C#_.net_Ms Access_Insert Update - Fatal编程技术网

Can';t从C#.NET更新Access数据库文件

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

我试着用Visual C#学习一些编码。我为添加和更新Access数据库创建了一个表单

我可以成功添加到Access文件,但无法更新它们

我在互联网上搜索时编写了一个类似于下面的代码,但我得到了这个错误:

ExecuteOnQuery需要打开且可用的连接。连接的当前状态为关闭

我的代码是:

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();
但是您已经打开了不同的ConnectionObject
con
,如下所示:

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();
但是您已经打开了不同的ConnectionObject
con
,如下所示:

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:您可以调试并查看错误和异常消息吗?抱歉,我无法调试它!我仍然没有到达调试章节:)因为我可以在数据库中添加新行,我认为错误一定是声明的字符串!但我不专业!:)