无法将MS Access连接到C#

时间:2015-09-29 00:28:37

标签: c# .net ms-access

我正在尝试为我们的电影数据库创建注册。我正在尝试从我们制作的MS Access建立连接。但每当我运行我的代码时,我都会收到错误。我正在使用Visual Studio Express 2012 C#。

为什么我的代码会触发此错误?

  

“类型'System.Data.OleDb.OleDbException'的未处理异常   发生在System.Data.dll中的附加信息:语法错误   INSERT INTO声明。“

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace BigScreen
{
public partial class sign_up : Form
{
    private OleDbConnection connection = new OleDbConnection();


    public sign_up()
    {
        InitializeComponent();

    }

    private void sign_up_Load(object sender, EventArgs e)
    {
        connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\raizel\Desktop\DataBase\Movie_Database.accdb;
        Persist Security Info=False;";

    }

    private void sign_up_FormClosed(object sender, FormClosedEventArgs e)
    {
        Form1 thisform = new Form1();
        thisform.Show();
    }

    }

    private void button1_Click(object sender, EventArgs e)
    {
            connection.Open();   
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            command.CommandText = "Insert into User ([firstname], [lastname], [username], [password]) values ('" + textBox2.Text + "','" + textBox5.Text + "','" + textBox4.Text + "','" + textBox1.Text + "')";

            command.ExecuteNonQuery();
            userID++;
            MessageBox.Show("Data Saved!");
            connection.Close();

    }
}

}

2 个答案:

答案 0 :(得分:4)

Userreserved word。像这样括起来通知db引擎这个单词是一个对象名:

Insert into [User] ...

你最好切换到Bradley暗示的参数化查询,但你仍然需要将保留字括起来。

答案 1 :(得分:0)

用户是sql server中leat的保留字。你的代码中有一些东西,你正在使用连接,这使你的代码有sql注入的危险,密码可以在数据库中以明文形式加密。

您需要在代码中使用use以确保在插入完成后关闭连接。如果错误引发异常,则连接保持打开状态,并且在将来尝试执行任何操作时都会遇到问题。关闭数据库并确保可以使用设计器执行操作,然后再次检查代码。

尝试移动到sql server ms访问对你的系统来说不是一个好的数据库。

I made this example using your structure in sql fiddle