public static SqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connString); try {
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch {
conn.Close();
throw;
} }
public static IList GetCitysView()
{
IList view = new ArrayList();
string cmdText = "select city from citys where ifkt=1";
SqlDataReader dr = Database.ExecuteReader(CommandType.Text,cmdText,null);
while(dr.Read())
{
ListItemEntity entity = new ListItemEntity(dr.GetString(0),dr.GetString(0));
view.Add(entity);
}
dr.Close();
return view;
}用完之后要记得关闭dr.Close();
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connString); try {
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch {
conn.Close();
throw;
} }
public static IList GetCitysView()
{
IList view = new ArrayList();
string cmdText = "select city from citys where ifkt=1";
SqlDataReader dr = Database.ExecuteReader(CommandType.Text,cmdText,null);
while(dr.Read())
{
ListItemEntity entity = new ListItemEntity(dr.GetString(0),dr.GetString(0));
view.Add(entity);
}
dr.Close();
return view;
}用完之后要记得关闭dr.Close();
Try
Dim Connstr As New SqlClient.SqlConnection(SqlConnstring)
Connstr.Open()
Dim SqlCmd As New SqlClient.SqlCommand
With SqlCmd
If CmdType = "Text" Then
.CommandType = CommandType.Text
Else
.CommandType = CommandType.StoredProcedure
End If
.CommandText = SelectSql
.Connection = Connstr
End With
ReturnDataReader = SqlCmd.ExecuteReader
Return ReturnDataReader
Connstr.Close()
Connstr = Nothing
Catch End Try
End Function
在程序中使用时候后,将DR.close都写上的啊,真是见鬼了
比如dr.close();一定要有。
最好用using语句,方便
" issue_sort='broker' and del=0 and real_del=0 and datediff(d,update_date,getdate())>" & Str3
Dim Dr As SqlClient.SqlDataReader = SqlAction.ReturnDataReader(Sql)
Dim I As Integer
Dim T As New DataTable()
With T.Columns
.Add("房源编号")
.Add(Fld1)
.Add("物业地址")
If GetTbl() <> "products" Then
.Add("套型")
.Add("面积(m<sup>2</sup>)")
End If
.Add(Fld2)
.Add("时间")
.Add("经纪人")
End With
Dim R As DataRow
Do While Dr.Read
R = T.NewRow
For I = 0 To Dr.FieldCount - 1
Dim S As String
If GetTbl() <> "products" And I = 3 Then
S = FuncStr.ReturnSort(Dr(I))
Else
If I = Dr.FieldCount - 2 Then
S = FormatDateTime(Dr(I), DateFormat.ShortDate)
ElseIf I = Dr.FieldCount - 1 Then
Dim Sql_BName As String = "Select broker_name from fh_f_broker_userid('" & Dr(I) & "')"
Dim Dr_BName As SqlClient.SqlDataReader = SqlAction.ReturnDataReader(Sql_BName)
If Dr_BName.Read Then
S = Dr_BName("broker_name")
Else
S = ""
End If
Dr_BName.Close()
Else
S = Dr(I)
End If
End If
R(I) = S
S = ""
Next
T.Rows.Add(R)
Loop
Dr.Close()
比如:如果你将DataReader直接赋给int型的变量,绝对是"未将对象引用到对象实例",
因此这是类型之间的转换问题!