【发布时间】:2014-01-19 11:01:32
【问题描述】:
遇到了一个问题...可能是查询语法中的某些问题, 并且编译器不会抛出任何异常。 但是表没有收到信息。
你发现了什么可能是错误的吗?
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());
}
}
【问题讨论】:
-
您确定您的连接字符串正确吗?
Convert.ToString(id)和BitConverter.ToString(mac)的值是多少?为什么你认为你应该拥有这些Commands方法?您的列的类型是什么?而且您应该始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。 -
类型:J_ID -> 编号,节点 ID -> 编号,节点 MAC -> 字符串,Q 行 -> 编号,状态 -> 字符串。现在我刚刚学习使用 sql 等,所以不需要参数化查询。
-
提示小鲍比桌...
-
数据目录? Where is DataDirectory
-
DataDirectory 是项目的主文件夹。