PDA

View Full Version : مشکل در استفاده از class value



f.beigirad
سه شنبه 19 دی 1391, 14:40 عصر
با سلام و عرض ادب.

من توی پروژم یه کلاس تعریف کردم و یه تابع تعریف کردم.مقدار بازگشتی تابعم یه دیتاساه.
ببینید.
private SQLiteDataAdapter da;
private DataSet ds;


public DataSet GetTables()
{
SQLiteConnection cnn = new SQLiteConnection("Data Source=AzmoonDB4.sqlite;Version=3");

string[] tables = new string[4] { "tQuestionCategory", "tSignCategory", "tQuestion", "tSign" };

for (int i = 0; i > 4; i++)
{
da=new SQLiteDataAdapter("SELECT * FROM @p",cnn);
da.SelectCommand.Parameters.AddWithValue("@p", tables[i]);
da.Fill(ds, tables[i]);


}
return ds;
}
مقادیری که توی آرایه ها ریخته میشن اسامی جدولای دیتابیس هستن.
همه ریخته میشن توی یه دیتاست و در آخر میخوام در فرمم از دیتاستی که اینجا returnمیشه استفاده کنم.


توی رویداد فرم لود هم به این صورت نوشتم:

DAL dalobj = new DAL();
private void Start_Load(object sender, EventArgs e)
{

DataSet ds = dalobj.GetTables();
dataGridView1.DataSource = ds.Tables["tQuestionCategory"];
}

در زمانی build میکنم ایرادی نمیگیره.وقتی میخوام اجرا کنم این خطا رو از کد خط 6 میگیره :

Object reference not set to an instance of an object.


با تشکر از دوستانی که پاسخ میدن.

f.beigirad
سه شنبه 19 دی 1391, 15:03 عصر
دوستان عزیز.فکر نمیکنم سوال سختی باشه.حتما یه جای کارم ایراد داره .اما نمیدونم کجاش و چرا؟

والا از نظر سینتکس نتونستم مشکلی پیدا کنم.

afshin_1989
سه شنبه 19 دی 1391, 15:21 عصر
کدام خط دقیقا این error می ده

f.beigirad
سه شنبه 19 دی 1391, 15:34 عصر
دوست عزیز گفتم که خط ششم.
dataGridView1.DataSource = ds.Tables["tQuestionCategory"];

afshin_1989
سه شنبه 19 دی 1391, 15:39 عصر
داخل کلاس اول dataset باید new بشه تا درست بشه

f.beigirad
سه شنبه 19 دی 1391, 15:46 عصر
من دیتاست رو new کردم .با اینکه برنامه باز میشه اما کاری که میخوامو انجام نمیده.یعنی گرید رو پر نمیکنه.

afshin_1989
سه شنبه 19 دی 1391, 15:51 عصر
داخل کدی که بالا نوشتی یعنی کلاس اول new نکردی
اگر منضورت داخل فرم لود هست که یک متغیر جدید تعریف کردی.به کد نگاه کن
فقط dataadapter هست که new شده
کد کامل بزار تا چکش کنم

f.beigirad
سه شنبه 19 دی 1391, 15:55 عصر
با تشکر از کاربر ramin2nt2

و afshin_1989.

مشکلم دوتا بود.
یکی خط 11 کلاس.
باید مینوشتم:
for (int i = 0; i < 4; i++)
و همچنین دیتایسم دو new میکردم.

ممنون دوستان

Mahmoud.Afrad
سه شنبه 19 دی 1391, 16:04 عصر
حلقه را به اینصورت تغییر بدید:
for (int i = 0; i > 4; i++)
{
da = new SQLiteDataAdapter("SELECT * FROM " + tables[i], cnn);
da.Fill(ds, tables[i]);
}