所以我正在使用 odbc 从数据库中检索数据。导致问题的我的一个领域是自动编号。在我使用“convert.toint64(empid)”的查询中,我收到数据类型不匹配的错误。但是当我使用参数时,它工作得很好。谁能告诉我有什么区别。据我所知,AutoNumber 是一个长整数,而 long int 是 64,对吧?
这是我的两个查询:
string cmdText = "SELECT p.projID, p.projName, a.wageperday " +
"FROM ((projects p INNER JOIN assigns a ON p.projID = a.projname) " +
"INNER JOIN empos e ON a.employeeID= e.ID) " +
"WHERE a.employeeID = ?";
OdbcCommand assignslist = new OdbcCommand(cmdText, _connection);
assignslist.Parameters.AddWithValue("@empID", empid);
OdbcDataReader readassigns = assignslist.ExecuteReader();
GridView1.DataSource = readassigns;
GridView1.DataBind();
(这个工作正常)
string cmdText = "SELECT p.projID, p.projName, a.wageperday " +
"FROM ((projects p INNER JOIN assigns a ON p.projID = a.projname) " +
"INNER JOIN empos e ON a.employeeID= e.ID) " +
"WHERE a.employeeID = '" + convert.toint64( empid ) + "';
OdbcCommand assignslist = new OdbcCommand(cmdText, _connection);
OdbcDataReader readassigns = assignslist.ExecuteReader();
GridView1.DataSource = readassigns;
GridView1.DataBind();
对于这个,即使我删除了转换,我也会收到一个错误,我会收到一个错误。
还有一个问题,我不完全理解 INNER JOIN,上面的代码来自帮助我的用户。我不明白他为什么使用“FROM((projects p INNER JOIN assigns a ON p.projID = a.projname)”+“INNER JOIN empos e ON a.employeeID= e.ID)”
两个括号——我的意思是括号内的括号。如果我想加入第 4 或第 5 桌,我必须将它放在主支架之外的支架内吗?一个例子将不胜感激!