System.Data.SqlClient.SqlDataReader rdr1;
System.Data.SqlClient.SqlCommand sqlComm=new System.Data.SqlClient.SqlCommand();
System.Data.SqlClient.SqlConnection sqlConn=new System.Data.SqlClient.SqlConnection();
sqlConn.ConnectionString="data source=TSTSERVER;initial catalog=FSDBST;user id=lei;password=lei";
sqlConn.Open();
sqlComm.Connection=sqlConn;
sqlComm.CommandText="select Top 1 MOHeaderKey from FS_MOHeader where MONumber='" +MONumber+"'";
rdr1=sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr1.Read()==false)
{
string MessageMO="MO单号:"+MONumber+"不存在";
Console(MessageMO);
}
else
{
int nMoHeaderKey=rdr1.GetInt32(0);
sqlComm.CommandText="select top 1 MoLineKey,ItemKey,ItemOrderedQuantity from FS_MOLine where MOHeaderKey='"+nMoHeaderKey+"' and MOLineNumber='"+Line+"'";
rdr1=sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr1.Read()==false)
{
string MessageMO="MO单号:"+MONumber+"行号:"+Line+"不存在";
Console(MessageMO);
}
}
运行时总时提示第二处的rdr1=sqlComm.ExecuteReader我想在一个模块的运行两次,应该怎么办,现头昏,请指教呀,
System.Data.SqlClient.SqlCommand sqlComm=new System.Data.SqlClient.SqlCommand();
System.Data.SqlClient.SqlConnection sqlConn=new System.Data.SqlClient.SqlConnection();
sqlConn.ConnectionString="data source=TSTSERVER;initial catalog=FSDBST;user id=lei;password=lei";
sqlConn.Open();
sqlComm.Connection=sqlConn;
sqlComm.CommandText="select Top 1 MOHeaderKey from FS_MOHeader where MONumber='" +MONumber+"'";
rdr1=sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr1.Read()==false)
{
string MessageMO="MO单号:"+MONumber+"不存在";
Console(MessageMO);
}
else
{
int nMoHeaderKey=rdr1.GetInt32(0);
sqlComm.CommandText="select top 1 MoLineKey,ItemKey,ItemOrderedQuantity from FS_MOLine where MOHeaderKey='"+nMoHeaderKey+"' and MOLineNumber='"+Line+"'";
rdr1=sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr1.Read()==false)
{
string MessageMO="MO单号:"+MONumber+"行号:"+Line+"不存在";
Console(MessageMO);
}
}
运行时总时提示第二处的rdr1=sqlComm.ExecuteReader我想在一个模块的运行两次,应该怎么办,现头昏,请指教呀,
在第二处重新声明一个SqlDataReader对象试试。
"select top 1 MoLineKey,ItemKey,ItemOrderedQuantity from FS_MOLine where MOHeaderKey in (select Top 1 MOHeaderKey from FS_MOHeader where MONumber='" +MONumber+"') and MOLineNumber='"+Line+"'"
int nMoHeaderKey=rdr1.GetInt32(0);
sqlComm.CommandText="select top 1 MoLineKey,ItemKey,ItemOrderedQuantity from FS_MOLine where MOHeaderKey='"+nMoHeaderKey+"' and MOLineNumber='"+Line+"'";
System.Data.SqlClient.SqlDataReader rdr2;
rdr2=sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr2.Read()==false)
{
string MessageMO="MO单号:"+MONumber+"行号:"+Line+"不存在";
Console(MessageMO);
}
}这个是重新申明的!
{
rdr1.Close();
int nMoHeaderKey=rdr1.GetInt32(0);
sqlComm.CommandText="select top 1 MoLineKey,ItemKey,ItemOrderedQuantity from FS_MOLine where MOHeaderKey='"+nMoHeaderKey+"' and MOLineNumber='"+Line+"'";
rdr1=sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr1.Read()==false)
{
string MessageMO="MO单号:"+MONumber+"行号:"+Line+"不存在";
Console(MessageMO);
}
}
这个是关闭的!谢Knight94(愚翁)
int nMoHeaderKey=rdr1.GetInt32(0);关闭怎么访问
现在并不是说这个取值的问题,主要是要多次使用rdr1=sqlComm.ExecuteReader(CommandBehavior.CloseConnection)的问题
用同一个connection不能同时打开两个datareader。
看错了,这段代码是关闭了,其实你不用关闭connection,你可以如下:rdr1=sqlComm.ExecuteReader();
int nMoHeaderKey = -1;//Init value with "-1"
if( rdr1.Read() )
{
nMoHeaderKey=rdr1.GetInt32(0);
}//Close data reader object
rdr1.Close();
if( nMoHeaderKey > 0 )
{
sqlComm.CommandText="select top 1 MoLineKey,ItemKey,ItemOrderedQuantity from FS_MOLine where MOHeaderKey='"+nMoHeaderKey+"' and MOLineNumber='"+Line+"'";
rdr1=sqlComm.ExecuteReader();
//Read data using "rdr1"
}