还是获得DATASET然后再转DATAVIEW吧
解决方案 »
- 去掉ListBox上的焦点
- .NET 高手进来帮帮忙(关于remoting)
- 小弟做了个CPU使用率曲线图 使用performanceCounter1组件 访问远程主机的时候出异常(拒绝访问)System.ComponentModel.Win32Exception
- DataView排序无效,急啊
- 自定义的一个控件,如何设置他的高度为固定值,即使应用了dockStyle.Full也不能改变其高度.
- 关于设计时代码生成(高人进)
- 如何控制textbox中光标的位置!
- 写程序遇到一个逻辑问题,欢迎大家来讨论。100分相送
- 在哪儿可以下载C#.net?
- c#中怎样讲STRING类型转为INT
- 不管我选中哪一行,我的dataGrid1.IsSelected为什么永远返回false?
- 对远程SQL数据库访问如果中断用try/catch捕捉连接要几秒钟,很有什么办法快一点。。。
可以定义System.Data.DataTable dt;把SqlDataReader的值保存到dt。System.Data.DataTable dt = new System.Data.DataTable;
int i =0;
wihle (dr.read())
{
for (int j=0;j<dr.FieldCount;j++)
{
dt.Rows[i][j]= dr[j];
}
i++;
}
System.Data.DataView dv = dt.DefaultView;
用DataSet就搞定了,老兄试一下
黑月说的方法同样也会降低执行速度
DataSet ds = new DataSet();
da.Fill(ds, "text");
DataView dv = ds.Tables["text"].DefaultView;;
DataList1.DataSource = dv;
DataList1.DataBind();
ShowPageStatus(dv.Count);
try
{
cmd = new SqlCommand(db.Sql,db.conn);
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
ReTitle.Text = dr["title"].ToString();
ReAuthor.Text = dr["author"].ToString();
Recontent.Text = dr["content"].ToString();
}
cmd.Connection.Close();
}
catch(SqlException E)
{
Response.Write(E.ToString());
}
楼上的方法行不通,无法将带[]的索引应用于object类型的表达式
---------------------
SqlDataReader reader=cmd.ExecuteReader();
while(reader.Read())
{
for(int i=0;i<reader.Field;i++)
{
str+=reader[i]+",";
}
}
while(reader.Read())
{
for(int i=0;i<reader.FieldCount;i++)
{
str+=reader[i]+",";
}
}
既然不要建立DataSet,那就建立一个DataTable行不,如果DataTable都不要,那哪来的DataView.没有表哪有视图。
如果楼主能忍受DataAdapter.Fill(DataTable dt);方法那还行,(其实速度不慢)
第二种其实也差不多:
DataTable dt = new DataTable();
.....
dt.BeginLoadData();
while(reader.Read())
{
object[] newRow = new object[reader.FieldCount];
newRow[0] = reader[0];
newRow[1] = reader[1];
....
dt.LoadDataRow(newRow, true);}
dt.EndLoadData();还有一种就是
定义一个类如DataInfo,表示单条纪录,然后在Reader.Read()循环中生成添加到ArrayList中,绑定ArrayList就行。但是我认为最快的速度还是直接绑定DataReader.