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是多余的。