DBHelper类中返回DataTable 的函数 public static DataTable ExcuteDataTable(string sql, CommandType type, OleDbParameter[] paras)
{
try
{
OleDbCommand cmd = new OleDbCommand(sql, Conn);
cmd.CommandType = type;
if (paras != null && paras.Length > 0)
cmd.Parameters.AddRange(paras);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds != null && ds.Tables.Count > 0)
return ds.Tables[0];
}
catch (Exception ex)
{
ex.ToString();
}
return null;
}在数据访问层中中写了一个查询方法 /// <summary>
/// 根据病人ID查询病人信息
/// </summary>
/// <param name="PATIENT_ID">参数病人ID</param>
/// <returns>返回数据集合</returns>
public DataSet getPAT_MASTER_INDEXbyPATIENT_ID(string PATIENT_ID)
{
this.sql = "select PATIENT_ID,NAME,sex from PAT_MASTER_INDEX where PATIENT_ID=@PATIENT_ID";
OleDbParameter[] paras=new OleDbParameter[]{
new OleDbParameter("@PATIENT_ID",OleDbType.VarChar)
};
paras[0].Value = PATIENT_ID;
return DBHelper.ExcuteDataSet(sql, CommandType.Text, paras);
}这样写的时候 DBHelper中执行到 da.Fill(ds);报错
如果把数据访问层中的方法改成下面的执行就是成功的! /// <summary>
/// 根据病人ID查询病人信息
/// </summary>
/// <param name="PATIENT_ID">参数病人ID</param>
/// <returns>返回数据集合</returns>
public DataSet getPAT_MASTER_INDEXbyPATIENT_ID(string PATIENT_ID)
{
this.sql = "select PATIENT_ID,NAME,sex from PAT_MASTER_INDEX where PATIENT_ID='"+ PATIENT_ID +"'";
//OleDbParameter[] paras=new OleDbParameter[]{
// new OleDbParameter("@PATIENT_ID",OleDbType.VarChar)
//};
//paras[0].Value = PATIENT_ID;
return DBHelper.ExcuteDataSet(sql, CommandType.Text, null);
}
system.Data.OleDb.OleDbException (0x80040E14): 在执行命令过程中,发生了一个或多个错误。
ORA-00936: missing expression
在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
在 OutFlowOptimizationDAL.DBHelper.ExcuteDataSet(String sql, CommandType type, OleDbParameter[] paras) 位置 E:\CodeManage\OutFlowOptimization\OutFlowOptimization\OutFlowOptimizationDAL\DBHelper.cs:行号 224
{
new OleDbParameter("@PATIENT_ID",OleDbType.VarChar)
};
参数的问题吧
/// <summary>
/// 根据病人ID查询病人信息
/// </summary>
/// <param name="PATIENT_ID">参数病人ID</param>
/// <returns>返回数据集合</returns>
public DataSet getPAT_MASTER_INDEXbyPATIENT_ID(string PATIENT_ID)
{
this.sql = "select PATIENT_ID,NAME,sex from PAT_MASTER_INDEX where PATIENT_ID=?";
OleDbParameter[] paras=new OleDbParameter[]{
new OleDbParameter("@PATIENT_ID",OleDbType.VarChar)
};
paras[0].Value = PATIENT_ID;
return DBHelper.ExcuteDataSet(sql, CommandType.Text, paras);
}