PDA

View Full Version : مشکل عدم تغییر شمارنده در DataRow



ehsanxxx
سه شنبه 12 خرداد 1394, 07:04 صبح
با اهدا سلام خدمت دوستان
من تو کار برنامه نویسی مبتدی هستم. در رابطه با datarow به یک مشکلی برخورد کردم. مشکلم اینکه تو برنامه زیر مقدار ایندکس در عبارت Rows تغییر نمیکنه. یعنی هر وقت کلیک میشه یکی از داده های بانک اطلاعاتی رو برمیگردونه ولی بار دوم که کلیک میکنم انتظار دارم رکورد بعدی رو منتقل کنه که نمیشه.

protected void Button1_Click(object sender, EventArgs e)
{

if(i<6)
{


SqlConnection con = new SqlConnection();
DataSet ds = new DataSet();
con.ConnectionString = "Data Source=.;Initial Catalog=tbldms1;Integrated Security=True";
string q = "select * from rrr";


SqlDataAdapter da = new SqlDataAdapter(q, con);
da.Fill(ds, "data");
con.Open();
DataRow drow = ds.Tables["data"].Rows[i++];
TextBox1.Text = drow.ItemArray.GetValue(0).ToString();
TextBox2.Text = drow.ItemArray.GetValue(1).ToString();
con.Close();
con.Dispose();
i = i + 1;
//عدم افزایش مقدار آی در برنامه
}
ممنون میشم راهنماییم کنید

asman.abi
سه شنبه 19 خرداد 1394, 12:47 عصر
برای اینکه مقدار i یا هر متغیری رو به ازای هر بار عوض کنی . باید داخل حلقه قرار بدی.
این طور
for(int i=0;i<شرط;i++)
{
عملیات
}

ehsanxxx
چهارشنبه 27 خرداد 1394, 16:47 عصر
ممنون ولی این مشکل رو حل نکرد!!!!!:افسرده:

reza_noei
پنج شنبه 28 خرداد 1394, 13:43 عصر
سلام
من خیلی وقت پیش یک کلاس برای کار با پایگاه داده نوشته بودم به (پیام ضمیمه کردم) امیدوارم به دردتون بخوره.
کد شما در هربار کلیک یکبار به پایگاه داده متصل میشه که این خوب نیست.
جداولتون رو به شکل سراسری تعریف کنید و از این کلاس استفاده کنید طرز کارش سادست.
در کد بالا هم هم میتوانستید از DataRow استفاده نکنید و مثلا بنویسید:
textbox1.text = ds.tables["Data"].Rows[i][0].toString();
textbox2.text = ds.tables["Data"].Rows[i++][1].toString();

===================================
اگر از پایگاه داده اکسس استفاده میکنید به سادگی تنها فضای نام اشیا استفاده شده را به فضای نام پایگاه داده اکسس تغییر دهید.

public class DataBase
{
// پیش از استفاده کانکشن استرینگ را تنظیم کنید
public static string ConnectionString;
// برای گرفتن تعداد رکورد بر اساس کوئری Select از این تابع استفاده کنید.
public static int GetScalar(System.Data.SqlClient.SqlCommand Command)
{
System.Data.SqlClient.SqlConnection Connection = new System.Data.SqlClient.SqlConnection(this.Connectio nString);
Command.Connection = Connection;
System.Data.SqlClient.SqlDataAdapter Adapter = new System.Data.SqlClient.SqlDataAdapter(Command);
System.Data.DataTable Table = new System.Data.DataTable();
try
{
Adapter.Fill(Table);
Command.Dispose();
Connection.Dispose();
Adapter.Dispose();
int i = Table.Rows.Count;
Table.Dispose();
return i;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
Adapter.Dispose();
Command.Dispose();
Connection.Dispose();
}
return 0;

}
// برای درج در پایگاه داده از این تابع استفاه کنید.
public static bool Insert(System.Data.SqlClient.SqlCommand Command)
{
System.Data.SqlClient.SqlConnection Connection = new System.Data.SqlClient.SqlConnection(this.Connectio nString);
Command.Connection = Connection;
Connection.Open();
try
{
Command.ExecuteNonQuery();
Command.Dispose();
Connection.Close();
Connection.Dispose();
return true;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
Command.Dispose();
Connection.Close();
Connection.Dispose();
return false;
}
}
// برای بروز رسانی پایگاه داده از این تابع استفاده کنید.
public static bool Update(System.Data.SqlClient.SqlCommand Command)
{
System.Data.SqlClient.SqlConnection Connection = new System.Data.SqlClient.SqlConnection(this.Connectio nString);
Command.Connection = Connection;
Connection.Open();
try
{
Command.ExecuteNonQuery();
Command.Dispose();
Connection.Close();
Connection.Dispose();
return true;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
Command.Dispose();
Connection.Close();
Connection.Dispose();
return false;
}
}
// برای حذف رکورد یا رکوردها از این تابع استفاده کنید.
public static bool Delete(System.Data.SqlClient.SqlCommand Command)
{
System.Data.SqlClient.SqlConnection Connection = new System.Data.SqlClient.SqlConnection(this.Connectio nString);
Connection.Open();
Command.Connection = Connection;
try
{
Command.ExecuteNonQuery();
Command.Dispose();
Connection.Close();
Connection.Dispose();
return true;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
Command.Dispose();
Connection.Close();
Connection.Dispose();
return false;
}
}
// برای انجام کوئری انتخاب از این تابع استفاده کنید خروجی یک جدول است که میتوانید به سادگی از سطرها و ستونهای آن استفاده کنید.
public static System.Data.DataTable Select(System.Data.SqlClient.SqlCommand Command)
{
System.Data.SqlClient.SqlConnection Connection = new System.Data.SqlClient.SqlConnection(this.Connectio nString);
Command.Connection = Connection;
System.Data.SqlClient.SqlDataAdapter Adapter = new System.Data.SqlClient.SqlDataAdapter(Command);
System.Data.DataTable Table = new System.Data.DataTable();
try
{
Adapter.Fill(Table);
Command.Dispose();
Connection.Dispose();
Adapter.Dispose();
return Table;
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
Adapter.Dispose();
Command.Dispose();
Connection.Dispose();
}
return null;
}
}