定义了一个数据库操作类,代码如下:
public class databaseUntil
{
private OracleCommand cmd = null;
private OracleConnection conn = null;
private string connstr;//从数据库中读取的连接语句 public databaseUntil()
{
connstr = ConfigurationManager.ConnectionStrings["oracleConnString"].ConnectionString;
} //建立数据库连接
//返回一个数据库的连接OracleConnection对象
public OracleConnection init()
{
conn = new OracleConnection(connstr);
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
} //设置OracleCommand对象
//参数:cmd--OracleCommand对象,cmdText--命令文本,cmdType--命令类型,cmdParms--参数集合
private void SetCommand(OracleCommand cmd, string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
{
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
cmd.Parameters.AddRange(cmdParms);
}
}
} 在c#服务器端调用代码如下:
OracleParameter[] pParm=new OracleParameter[10];pParm[0].DbType = DbType.String;//项目名称
pParm[0].Direction = ParameterDirection.Input;
pParm[0].ParameterName="Projectname";
pParm[0].Value=projectNameText.Text;pParm[1].DbType=DbType.String;//建设单位
pParm[1].Direction = ParameterDirection.Input;
pParm[1].ParameterName="BUILDINGCOMPANY";
pParm[1].Value=companyText.Text;databaseUntil pDbUntil = new databaseUntil();
pDbUntil.init();//先初始化数据库连接
int row=pDbUntil.SetCommand("plan_fliles_upLoad_file", CommandType.StoredProcedure, pParm);//传入到数据库中在编译运行时,VS2005总是提示:pParm[0].DbType = DbType.String;定义错误。对SetCommand提示,也提示数据参数类型不对,为什么?
public class databaseUntil
{
private OracleCommand cmd = null;
private OracleConnection conn = null;
private string connstr;//从数据库中读取的连接语句 public databaseUntil()
{
connstr = ConfigurationManager.ConnectionStrings["oracleConnString"].ConnectionString;
} //建立数据库连接
//返回一个数据库的连接OracleConnection对象
public OracleConnection init()
{
conn = new OracleConnection(connstr);
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
} //设置OracleCommand对象
//参数:cmd--OracleCommand对象,cmdText--命令文本,cmdType--命令类型,cmdParms--参数集合
private void SetCommand(OracleCommand cmd, string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
{
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
cmd.Parameters.AddRange(cmdParms);
}
}
} 在c#服务器端调用代码如下:
OracleParameter[] pParm=new OracleParameter[10];pParm[0].DbType = DbType.String;//项目名称
pParm[0].Direction = ParameterDirection.Input;
pParm[0].ParameterName="Projectname";
pParm[0].Value=projectNameText.Text;pParm[1].DbType=DbType.String;//建设单位
pParm[1].Direction = ParameterDirection.Input;
pParm[1].ParameterName="BUILDINGCOMPANY";
pParm[1].Value=companyText.Text;databaseUntil pDbUntil = new databaseUntil();
pDbUntil.init();//先初始化数据库连接
int row=pDbUntil.SetCommand("plan_fliles_upLoad_file", CommandType.StoredProcedure, pParm);//传入到数据库中在编译运行时,VS2005总是提示:pParm[0].DbType = DbType.String;定义错误。对SetCommand提示,也提示数据参数类型不对,为什么?
那我如果写代码才是正确呢
pParm[0] = new OracleParameter("Projectname",projectNameText.Text,DbType.String,ParameterDirection.Input);
其他的元素也一样,一个个都用new OracleParameter 构造函数 构造。
OracleParameter[] pParm=new OracleParameter[10];
pParm[0] =("Projectname",OracleType.VarChar);
pParm[0].Direction = ParameterDirection.Input;
pParm[0].Value=projectNameText.Text; .....其他依次这么构造。databaseUntil pDbUntil = new databaseUntil();
pDbUntil.init();//先初始化数据库连接
OracleCommand cmd = new OracleCommand(); //这个对象也得传。不然跟你方法都不匹配。
int row=pDbUntil.SetCommand( cmd ,"plan_fliles_upLoad_file", CommandType.StoredProcedure, pParm);
你需要看看C#数组的定义
手误:
pParm[0] =new OracleParameter("Projectname",OracleType.VarChar);