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

时间:2013-12-07 15:18:05

标签: c# asp.net ms-access insert

我正在尝试将用户的详细信息插入到我的数据库中名为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();
    }
}

4 个答案:

答案 0 :(得分:2)

嗯,您没有告诉我们您是否收到任何错误,但使用parameterized queries始终是一个更好的选择。这个字符串连接的kinf对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);

MS Access上的userName也是reserved keywords。您应该使用方括号,例如[user][Name]

作为一般推荐,请勿在数据库中使用保留关键字作为标识符和对象名称。

答案 1 :(得分:0)

你错过了几个撇号。

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

试试这个:

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

答案 2 :(得分:0)

问题:您滥用单引号。

解决方案:您需要将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 :(得分:0)

问题是'user'是MS Access的关键字。你必须把它放在尖括号中:[user]

HTH Thomas