در ادامه
یک متغیر سراسری تعریف میکنم تا موقعیت رکورد فعلی رو نگه داره و با کلید ها مقدار اون رو کم و زیاد میکنم
یک DataTable سراسری هم تعریف میکنم تا اطلاعات رو توی اون بار کنم
فضای نامهای مورد نیاز رو هم اضافه میکنم
توی رویداد Form_Load کد زیر رو مینویسم تا table مورد نظرم رو پر کنم
دقت کنید که معمولا روال کار با بانک بصورت زیره
بانکهای اطلاعاتی مثل SqlServer به صورت سرویس روی سیستم اجرا میشن
یعنی همیشه گوش به زنگن تا اینکه یک دستور بهشون برسه و دستور رو اجرا کنن و خروجی برگردونن
با این تفاسیر
ابتدا باید یک ارتباط یا Connection به بانک ایجاد میکنیم
دستور رو بفرستیم (Command)
خروجی رو بگیریم (مثل Table)
ارتباط رو قطع کنیم
...
using System.Data;
using System.Data.SqlClient;
...
DataTable table;
int i;
private void Form1_Load(object sender, EventArgs e)
{
table = new DataTable();
i = 0;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = new SqlConnection();
da.SelectCommand.Connection.ConnectionString = "Data Source=.;Initial Catalog=master;Integrated Security=True";
da.SelectCommand.CommandText = "select top 20 * from sysmessages";
try
{
da.Fill(table);
}
catch
{
}
}
کد بالا جدول رو با دستور اس کیو ال نوشته شده پر میکنه.
دقت کنید که متد Fill نیازی به باز و بسته کردن ارتباط نداره و خودش این کار رو انجام میده
ولی اگه ما خودمون دستی ارتباط رو باز کنیم متد Fill اون رو نمیبنده.
حالا برای مرور داده ها
برای رویداد های کلیک کلیدها کد زیر رو مینویسم
private void btnMoveNext_Click(object sender, EventArgs e)
{
if (table.Rows.Count<0)
return;
if (i < table.Rows.Count)
i++;
txtCode.Text = table.Rows[i]["Error"].ToString();
txtName.Text = table.Rows[i]["description"].ToString();
Text = "record=" + i;
}
private void btnMovePrevious_Click(object sender, EventArgs e)
{
if (table.Rows.Count < 0)
return;
if (i > 0)
i--;
txtCode.Text = table.Rows[i]["Error"].ToString();
txtName.Text = table.Rows[i]["description"].ToString();
Text = "record=" + i;
}