用Access做数据库碰到了这个问题,代码如下:Insert时正常,但是查询时出错。相关的语句代码如下://Insert部份private const string Insert_Agent = "INSERT INTO AgentInfo VALUES(@AgentID , @UserName, @AddDate, @AgentStatus, @AgentType)";
public int InserAnAgent(AgentInfo agent)
{
// TODO: 添加 Agent.InserAnAgent 实现
int result; OleDbParameter[] parms = {
AccessHelper.MakeInParam(PARM_AgentID,OleDbType.VarChar,50,agent.AgentID),
AccessHelper.MakeInParam(PARM_UserName,OleDbType.VarChar,50,agent.AgentUserName),
AccessHelper.MakeInParam(PARM_AddDate,OleDbType.DBDate,20,agent.AgentAddDate),
AccessHelper.MakeInParam(PARM_AgentStatus,OleDbType.Integer,16,agent.AgentStatus),
AccessHelper.MakeInParam(PARM_AgentType,OleDbType.VarChar,50,agent.AgentType)
}; try
{
result = AccessHelper.ExecuteNonQuery(Insert_Agent,parms);
}
catch(Exception ex)
{
throw ex;
}
return result;
}//Select部份出错,代码如下:
private const string Select_Agents_ByAddDate = "SELECT AgentID,UserName,AgentStatus,AgentType FROM AgentInfo WHERE AddDate = '#' +@AddDate + '#'";public IList GetAgentsInfoByAddDate(DateTime addDate)
{
// TODO: 添加 Agent.GetAgentsInfoByAddDate 实现
IList agentList = new ArrayList();
OleDbParameter[] parms = {
AccessHelper.MakeInParam(PARM_AddDate,OleDbType.DBDate,20,addDate) //语句中参数换成具体时间如#2008-10-16#就正确,这边应该是出错的地方
}; using(OleDbDataReader rdr = AccessHelper.ExecuteReader(CommandType.Text,Select_Agents_ByAddDate,parms))
{
while(rdr.Read())
{
agentList.Add(new AgentInfo(rdr.GetString(0),rdr.GetString(1),addDate,rdr.GetInt32(2),rdr.GetString(3)));
}
}
return agentList;
}
public int InserAnAgent(AgentInfo agent)
{
// TODO: 添加 Agent.InserAnAgent 实现
int result; OleDbParameter[] parms = {
AccessHelper.MakeInParam(PARM_AgentID,OleDbType.VarChar,50,agent.AgentID),
AccessHelper.MakeInParam(PARM_UserName,OleDbType.VarChar,50,agent.AgentUserName),
AccessHelper.MakeInParam(PARM_AddDate,OleDbType.DBDate,20,agent.AgentAddDate),
AccessHelper.MakeInParam(PARM_AgentStatus,OleDbType.Integer,16,agent.AgentStatus),
AccessHelper.MakeInParam(PARM_AgentType,OleDbType.VarChar,50,agent.AgentType)
}; try
{
result = AccessHelper.ExecuteNonQuery(Insert_Agent,parms);
}
catch(Exception ex)
{
throw ex;
}
return result;
}//Select部份出错,代码如下:
private const string Select_Agents_ByAddDate = "SELECT AgentID,UserName,AgentStatus,AgentType FROM AgentInfo WHERE AddDate = '#' +@AddDate + '#'";public IList GetAgentsInfoByAddDate(DateTime addDate)
{
// TODO: 添加 Agent.GetAgentsInfoByAddDate 实现
IList agentList = new ArrayList();
OleDbParameter[] parms = {
AccessHelper.MakeInParam(PARM_AddDate,OleDbType.DBDate,20,addDate) //语句中参数换成具体时间如#2008-10-16#就正确,这边应该是出错的地方
}; using(OleDbDataReader rdr = AccessHelper.ExecuteReader(CommandType.Text,Select_Agents_ByAddDate,parms))
{
while(rdr.Read())
{
agentList.Add(new AgentInfo(rdr.GetString(0),rdr.GetString(1),addDate,rdr.GetInt32(2),rdr.GetString(3)));
}
}
return agentList;
}
AccessHelper.MakeInParam(PARM_AddDate,OleDbType.DBDate,20,addDate.ToShortDateString())之类的也还是不行。
using(OleDbDataReader rdr = AccessHelper.ExecuteReader(CommandType.Text,str,(OleDbP..)null)) {
while(rdr.Read())
{
agentList.Add(new AgentInfo(rdr.GetString(0),rdr.GetString(1),addDate,rdr.GetInt32(2),rdr.GetString(3))); }
}===============================================
这样是肯定可以,也测试通过。但还是不清楚之前的方式错在哪。