Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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# 如何将值插入数据库(Microsoft access)?_C#_Asp.net_Ms Access_Insert - Fatal编程技术网

C# 如何将值插入数据库(Microsoft access)?

C# 如何将值插入数据库(Microsoft access)?,c#,asp.net,ms-access,insert,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 + "' )

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

你漏掉了几个撇号

按照您的方式,不是传递两个参数(即
'one'
'two'
),而是传递一个参数(即
'one,two'

试试这个:

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

问题:您误用了单引号

解决方案:您需要将
VARCHAR
类型正确地用单引号括起来

试试这个:

string myQuery = "INSERT INTO [user] ([Name],Surname) VALUES ( '" + n + "' , '" + s + "' )";
我建议您使用
参数化sql查询
来避免
sql注入攻击

尝试以下操作:使用参数化查询

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);

好吧,你没有告诉我们你有没有任何错误,但使用总是一个更好的选择。这一系列字符串连接对攻击是开放的

比如,

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);
此外,
user
Name
也在MS访问中。您应该将它们与方括号一起使用,如
[user]
[Name]


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

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


HTH Thomas

您是否收到任何异常或错误?我认为是这样,因为当我调试它时,它试图捕获异常,而数据库中没有添加任何内容。请使用@Soner Gönül给出的答案