Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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#_Sql_Ms Access_Syntax - Fatal编程技术网

C# 访问数据库,数据库没有反应

C# 访问数据库,数据库没有反应,c#,sql,ms-access,syntax,C#,Sql,Ms Access,Syntax,遇到问题。。。可能是查询语法中的某些东西, 编译器不会抛出任何异常。 但该表不接收信息 你注意到了什么可能是错的吗 OleDbConnection conn; OleDbCommand cmd; public Commands(OleDbConnection con) { conn = con; } public Commands() { conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data

遇到问题。。。可能是查询语法中的某些东西, 编译器不会抛出任何异常。 但该表不接收信息

你注意到了什么可能是错的吗

OleDbConnection conn;
OleDbCommand cmd;


public Commands(OleDbConnection con)
{
    conn = con;
}


public Commands()
{
    conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB.accdb");
}

public void node_Join(int id, byte[] mac)
{
    try
    {
        conn.Open();
        cmd = new OleDbCommand(@"INSERT INTO Nodes ([J_ID],[Node ID],[Node MAC],[Line Quality],[Status]) values('" + Convert.ToString(id) + @"',0,'" + BitConverter.ToString(mac) + @"',0,'Join')", conn);
        cmd.ExecuteNonQuery();
        conn.Close();
    }
    catch (Exception exc)
    {
        conn.Close();
        MessageBox.Show(exc.Message.ToString());
    }
}

现在还不清楚你想做什么,我想冒险回答,但无论如何

正如我在我的报告中所说,你应该始终使用。这种类型的字符串连接对攻击是开放的

而且,由于您的
J_ID
列是
Number
,因此没有必要使用
Convert.ToString(ID)
插入字符串。使用
id
(我假设它是一个整数)可能很好

还可用于处理
OLEDB连接

像这样尝试

using(OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB.accdb"))
{
  using(cmd = new OleDbCommand(@"INSERT INTO Nodes ([J_ID],[Node ID],[Node MAC],[Line Quality],[Status]) values(?, ?, ?, ?, ?", conn))
  {
    cmd.Parameters.AddWithValue("@id", id);
    cmd.Parameters.AddWithValue("@nodeid", 0);
    cmd.Parameters.AddWithValue("@nodemac", BitConverter.ToString(mac));
    cmd.Parameters.AddWithValue("@line", 0);
    cmd.Parameters.AddWithValue("@status", "Join");
    conn.Open();
    cmd.ExecuteNonQuery();
  }
}

同时考虑一下Steve的建议。

您确定您的连接字符串是正确的吗?
Convert.ToString(id)
BitConverter.ToString(mac)
的值是多少?为什么您认为应该使用这些
命令
方法?你的专栏是什么类型的?你应该经常使用。这类字符串连接可用于攻击。类型:J_ID->Number,Node ID->Number,Node MAC->string,Line Q->Number,Status->string。现在我正在学习使用sql等。所以参数化查询不是那么需要。提示小bobby表…DataDirectory?DataDirectory是项目的主文件夹。同样的问题。表格仍然是空的。@VictorLev更新了我的答案。请只尝试我的代码,让我知道它是否工作?发现问题,这要感谢将连接字符串中的“| DataDirectory |”更改为完整路径。工作很有魅力。您的代码工作得非常完美,而且更加舒适。。。感谢您的帮助。还可以使用using语句来处理您的OleDbConnection OleDbCommand也可以IDisposable,因为它是一个DbCommand。此外,conn.Close是多余的。