如何将值插入数据库(Microsoft 访问)?

Posted

技术标签:

【中文标题】如何将值插入数据库(Microsoft 访问)?【英文标题】:How to insert values into a database (Microsoft access)? 【发布时间】:2013-12-07 15:18:04 【问题描述】:

我正在尝试将用户的详细信息插入到我的数据库中名为 user 的表中,但是我认为我编写负责执行此操作的查询的方式有问题。

这是我到目前为止所做的:

public static void addUser(string n, string s)

    OleDbConnection myConnection = GetConnection();
    string myQuery = "INSERT INTO user( Name, Surname) VALUES ( '" + n + " , " + s + "' )";
    OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);

    try
    
        myConnection.Open();
        myCommand.ExecuteNonQuery();
    
    catch (Exception ex)
    
        Console.WriteLine("Exception in DBHandler", ex);
    
    finally
    
        myConnection.Close();
    

【问题讨论】:

您是否遇到任何异常或错误? 我是这么认为的,因为当我调试它时,它会尝试捕获异常并且不会将任何内容添加到数据库中。 使用@Soner Gönül 给出的答案 【参考方案1】:

好吧,您没有告诉我们您是否收到任何错误,但使用 parameterized queries 始终是更好的选择。这种字符串连接对SQL Injection 攻击开放。

例如;

string myQuery = "INSERT INTO [user] ([Name], Surname) VALUES (@n, @s)";
OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);
myCommand.Parameters.AddWithValue("@n", n);
myCommand.Parameters.AddWithValue("@s", s);

userName 在 MS Access 上也是 reserved keywords。您应该将它们与方括号一起使用,例如 [user][Name]

作为一般建议,不要将保留关键字用于数据库中的标识符和对象名称。

【讨论】:

【参考方案2】:

问题:您误用了单引号。

解决方案:您需要将VARCHAR 类型正确括在单引号中

试试这个:

string myQuery = "INSERT INTO [user] ([Name],Surname) VALUES ( '" + n + "' , '" + s + "' )";

我建议你使用Parameterised sql queries来避免Sql Injection attacks

试试这个:使用参数化查询

string myQuery = "INSERT INTO [user]([Name], Surname) VALUES (@name,@surname)";
OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);
myCommand.Parameters.AddWithValue("@name",n);
myCommand.Parameters.AddWithValue("@surname",s);

【讨论】:

【参考方案3】:

你少了几个撇号。

你得到它的方式,不是传递两个参数(即'one''two'),而是传递一个参数(即'one , two')。

试试这个:

string myQuery
    = "INSERT INTO user( Name, Surname) VALUES ( '" + n + "' , '" + s + "' )";

【讨论】:

【参考方案4】:

问题是“用户”是 MS Access 的关键字。您必须将其放在尖括号中:[user]

HTH 托马斯

【讨论】:

以上是关于如何将值插入数据库(Microsoft 访问)?的主要内容,如果未能解决你的问题,请参考以下文章

使用窗体上的按钮将值插入Microsoft Access数据库

如何将数据表插入 Microsoft Access?

需要帮助以获取访问表单以将值插入查询

无法使用 Ucanaccess 3.0.6 将值插入 access 97。它显示访问是只读的

如何使用过程将值插入数据库

从 vb.net 将值插入 Access db