PDA

View Full Version : Bind کردن و Read همزمان DataReader



JikSearch
شنبه 07 آبان 1384, 11:40 صبح
سلام
لطفاً کد زیر را ببینید:

constr=ConfigurationSettings.AppSettings.Get("ConnStr");
OleDbConnection conn = new OleDbConnection(constr);
OleDbCommand cmd ;
OleDbDataReader dr;
conn.Close();
conn.Open();
string query = "SELECT * FROM daily WHERE (([daily]![ID])="+picID+");";
cmd = new OleDbCommand(query, conn);
dr = cmd.ExecuteReader();

dr.Read();
date=pn.PersianNumber(Convert.ToString(dr["day"]));

DataList1.DataSource=dr;
DataList1.DataBind();

conn.Close();
dr.Close();


اگر اول dr.Read را انجام دهم هیچ مقداری در DataList قرار نمی گیرد و اگر اول DataList1.DataBind را انجام دهم dr["day"]a مقدارش خالی می شود(حرف a را در نظر نگیرید)
حالا به نظر شما چه کار می توانم بکنم؟

Identifier
شنبه 07 آبان 1384, 12:49 عصر
چرا از دستا ست استفاده نمی کنین


SqlConnection myconnection= new SqlConnection("Your connection string here");
SqlCommand mycommand = new SqlCommand("Select * from text",myconnection);
mycommand.CommandType=CommandType.Text;
DataSet ds = new DataSet();
SqlDataAdapter dapt = new SqlDataAdapter(mycommand);
dapt.Fill(ds,"EContact");
myconnection.Open();
mycommand.ExecuteNonQuery();
DataGrid1.DataSource=ds;
DataGrid1.DataBind()

JikSearch
شنبه 07 آبان 1384, 14:32 عصر
دوست عزیز ممنون از جوابتان ولی این صفحه قراره hit بالایی داشته باشه (انشاء الله)
و از آنجایی که خودتان می دانید:
Using the DataReader increases application performance and reduces system overheads.
(نقل قول از جناب Sandeep Mogulla)
و
If you need to retrieve many records rapidly, use a DataReader. The DataReader object is fast, returning a fire hose of read-only data from the server, one record at a time. In addition, retrieving results with a DataReader requires significantly less memory than a creating a DataSet.
(نقل قول از جناب John Goodson)

به همین دلیل می خواهم از DataReader استفاده کنم.

پ.ن. مقالات با عنوان DataReader vs. DataSet را جستجو کنید.

nazaninam
شنبه 07 آبان 1384, 17:06 عصر
droplist.Items.Clear()
con = New OleDbConnection(connectionstring)
cmd = New OleDbCommand("SELECT * FROM daily WHERE (([daily]![ID])="+picID+")", con)
con.Open()
dr = cmd.ExecuteReader()
droplist.DataSource = dr
droplist.DataTextField = "text"
droplist.DataValueField = "value"
droplist.DataBind()
dr.Close()
con.Close()
این بخوبی کار می کنه

JikSearch
شنبه 07 آبان 1384, 17:16 عصر
جناب nazaninam کد شما به خوبی کار می کند ولی من نیاز به کدی مشابه کد خودم دارم
یک مقدار droplist با datalist فرق دارد !!! (فکر کنم کد من را اشتباه خواندید)
بهر حال از توجه تان ممنونم

Behrouz_Rad
شنبه 07 آبان 1384, 23:04 عصر
باید از 2 DataReader استفاده کنید.
موفق باشید.