Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 微软访问引擎_C#_Visual Studio_Ms Access - Fatal编程技术网

C# 微软访问引擎

C# 微软访问引擎,c#,visual-studio,ms-access,C#,Visual Studio,Ms Access,我正在尝试将Visual Studio中的数据添加到C#中的Access中。每次单击按钮保存数据时,都会弹出一条错误消息,上面写着“Microsoft数据库引擎”。我不知道问题出在哪里。我将代码粘贴到下面: private void btnsave_Click(object sender, EventArgs e) { OleDbConnection conn = new OleDbConnection(); conn.ConnectionStr

我正在尝试将Visual Studio中的数据添加到C#中的Access中。每次单击按钮保存数据时,都会弹出一条错误消息,上面写着“Microsoft数据库引擎”。我不知道问题出在哪里。我将代码粘贴到下面:

    private void btnsave_Click(object sender, EventArgs e)
    {

        OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\My Monroe\Semester 5\Advanced Programming\Final Project\WindowsFormsApplication1\WindowsFormsApplication1\Final exam .accdb";
        string fname = first_NameTextBox.Text;
        string lname = last_NameTextBox.Text;
        string snum = sSNTextBox.Text;
        string city = cityTextBox.Text;
        string state = stateTextBox.Text;
        string telnum = telephone__TextBox.Text;
        OleDbCommand cmd = new OleDbCommand("INSERT into Customers(First Name, Last Name, SSN,City,State,Telephone# )" + " values(@fname,@lname,@snum,@city,@state,@telnum)", connect);
        cmd.Connection = conn;
        conn.Open();
        if (conn.State == ConnectionState.Open)
        {
            cmd.Parameters.Add("@fname", OleDbType.Char, 20).Value = fname;
            cmd.Parameters.Add("@lname", OleDbType.Char, 20).Value = lname;
            cmd.Parameters.Add("@snum", OleDbType.Numeric, 20).Value = snum;
            cmd.Parameters.Add("@city", OleDbType.Char, 20).Value = city;
            cmd.Parameters.Add("@state", OleDbType.Char, 20).Value = state;
            cmd.Parameters.Add("@telnum", OleDbType.Numeric, 20).Value = telnum;
            try
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("Data Added");
                conn.Close();
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Source);
                conn.Close();
            }
        }
        else
        {
            MessageBox.Show("Connection Failed");
        }
    }

有几件事需要检查。首先把捕获物改为

MessageBox.Show(ex.Message);
这将是更多的信息

第二,在哪一行抛出错误?第三,请检查您的连接字符串。当我附加到access时,我的字符串的格式始终为:

@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBFullPath\DBName.accdb;Jet OLEDB:Engine Type=5;Persist Security Info=False;"
如果没有密码或

@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBFullPath\DBName.accdb;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password = password;"
如果有的话

最后,你真的有一个电话字段作为数字吗?以0开头的数字或以+开头的国际数字会发生什么情况

编辑

对不起,我想你误解我了。我想让你做的是修改渔获量,使其(完整)如下:


我一直在使用数据库的连接字符串。我应该换成我的形式吗?@atifulslam如果你知道连接字符串可以工作,那么就离开它。我正在看清单。你换过留言箱了吗?这将大有帮助!是的,把它从catch改成了它所说的,但似乎有一些错误,VS继续建议catch作为解决方案。然而,主要问题仍然存在。每次我运行应用程序,输入数据并单击“保存”按钮时,都会弹出一个消息框,上面写着“Microsoft Office Access Engine”,很抱歉我离开了工作!如果您仍然有问题,请查看我的编辑,然后告诉我错误消息的内容。谢谢您的帮助!这一变化似乎取得了一些进展。现在,错误消息显示“INSERT INTO语句中的语法错误”,您的数据库文件名的末尾真的有空格吗<代码>期末考试。accdb是的。我刚刚检查了它的主文件。我就是想不出它有什么问题。我工作了一整天
catch (OleDbException ex)
{
    MessageBox.Show(ex.Message);
    conn.Close();
}