PDA

View Full Version : سوال: مشکل با خواندن اطلاعات از Data Base



Salar Ashgi
سه شنبه 22 اردیبهشت 1388, 23:16 عصر
با سلام به همه دوستان عزیز ، من تا حالا با فایل ها زیاد کار کرده ام ، ولی تجربه چندانی

در کارکردن با DB نداشته ام .

سوال من : من یک جدول بانک اطلاعاتی در Access ایجاد کرده ام به نام student و نام فایل

بانک اطلاعاتی university.mdb میباشد ، جدول دارای 3 ستون و دارای فیلد های

Name , StdNum , Major میباشد ، من با کد زیر میخواهم اطلاعات را از DB خوانده و در یک

ListBox نشان دهم ، ولی با کد زیر فقط سطر اول جدول نشان داده میشود و بقیه اطلاعات

سطر های بعدی نشان داده نمی شوند !! ممنون میشم اگه راهنمایی کنید :

کد برنامه :



string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\university.mdb";
OleDbConnection con1 = new OleDbConnection(connectionString);
con1.Open();
string queryString = "SELECT * FROM student";
OleDbCommand c1 = new OleDbCommand(queryString);
c1.Connection = con1;
OleDbDataReader dr = c1.ExecuteReader();
object[] list = new object[10];

while (dr.Read())
{
dr.GetValues(list);
}
con1.Close();
foreach (object obj in list)
{
if(obj!=null)
listBox1.Items.Add(obj);
}


متشکر و ممنون .

sd.CSharpProgrammer
سه شنبه 22 اردیبهشت 1388, 23:37 عصر
سلام

یه راه بهت میگم که شاید غیراصولی و غیر استادارد باشه ولی همیشه جواب میده.



string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\university.mdb";

DataSet dataSet;
OleDbDataAdapter dataAdapter;

try
{
dataSet = new DataSet();
dataAdapter = new OleDbDataAdapter("SELECT * FROM student", connectionString);
dataAdapter.Fill(dataSet, "StudentTable");
int tableRowsCount = dataSet.Tables["StudentTable"].Rows.Count;

if (tableRowsCount > 0)
{
for (int count = 0; count < tableRowsCount; count++)
{
string name = dataSet.Tables["StudentTable"].Rows[count]["Name"].ToString();
string stdNum = dataSet.Tables["StudentTable"].Rows[count]["StdNum"].ToString();
string major = dataSet.Tables["StudentTable"].Rows[count]["Major"].ToString();

listBox1.Items.Add(stdNum + " " + name + " " + major);
}
}
}
catch (OleDbException ex)
{
MessageBox.Show("Error : " + ex.Message);
}
finally
{
dataSet = null;
dataAdapter = null;
}



اگه توضیح خواستی بگو برات بزارم
موفق باشی

Reza_Yarahmadi
چهارشنبه 23 اردیبهشت 1388, 00:41 صبح
دوست عزیز برای نمایش اطلاعات یک جدول بهتره از DataGridView استفاده کنی نه از ListBox
ListBox قابلیت نمایش فقط یک ستون رو داره اما DataGridView در تعداد ستونها چندادن محدودیتی نداره.

shahab_ss
چهارشنبه 23 اردیبهشت 1388, 08:06 صبح
این کد برای نمایش اطلاعاد در ListView هست.

public void fill_lst()
{
try
{
MyDbConnection.Open();
MyDbCommand = MyDbConnection.CreateCommand();

MyDbCommand.CommandText = "SELECT f1,f2,f3,f4,f5 FROM T1 WHERE f1 = 1";
OleDbDataReader oleReader = MyDbCommand.ExecuteReader();
list_T1.Items.Clear();
/// fill the list box
ListViewItem lvItem;
object[] objArray = new object[ 5 ];
int nColumn = 0;
while( oleReader.Read() == true )
{
nColumn = 0;
oleReader.GetValues( objArray );

lvItem = list_T1.Items.Add( objArray.GetValue( nColumn++ ).ToString() );
for( ; nColumn < 5; nColumn++ )
{
lvItem.SubItems.Add( oleReader.GetValue( nColumn ).ToString() );
}

}
MyDbConnection.Close();
}
catch( OleDbException exp )
{
string strError = exp.Message;
MessageBox.Show( this, strError, "Exception thrown" );
MyDbConnection.Close();
}

}

Salar Ashgi
چهارشنبه 23 اردیبهشت 1388, 11:15 صبح
دوست عزیز برای نمایش اطلاعات یک جدول بهتره از DataGridView استفاده کنی نه از ListBox
ListBox قابلیت نمایش فقط یک ستون رو داره اما DataGridView در تعداد ستونها چندادن محدودیتی نداره.

حرف شما کاملا منطقی و درسته !!! ولی من برای تست کردن کد اینکارو انجام داده بودم ،

و می خواستم فقط اطلاعات رو بخونم !!!

ممنون از راهنمایی شما !!!

Salar Ashgi
چهارشنبه 23 اردیبهشت 1388, 11:21 صبح
سلام

یه راه بهت میگم که شاید غیراصولی و غیر استادارد باشه ولی همیشه جواب میده.



string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\university.mdb";

DataSet dataSet;
OleDbDataAdapter dataAdapter;

try
{
dataSet = new DataSet();
dataAdapter = new OleDbDataAdapter("SELECT * FROM student", connectionString);
dataAdapter.Fill(dataSet, "StudentTable");
int tableRowsCount = dataSet.Tables["StudentTable"].Rows.Count;

if (tableRowsCount > 0)
{
for (int count = 0; count < tableRowsCount; count++)
{
string name = dataSet.Tables["StudentTable"].Rows[count]["Name"].ToString();
string stdNum = dataSet.Tables["StudentTable"].Rows[count]["StdNum"].ToString();
string major = dataSet.Tables["StudentTable"].Rows[count]["Major"].ToString();

listBox1.Items.Add(stdNum + " " + name + " " + major);
}
}
}
catch (OleDbException ex)
{
MessageBox.Show("Error : " + ex.Message);
}
finally
{
dataSet = null;
dataAdapter = null;
}


اگه توضیح خواستی بگو برات بزارم
موفق باشی




=====================================

دوست عزیز ممنون از راهنمایی شما ، اگه زحمتی نیست یه توضیح مختصری در مورد کد

بفرمایید !!!

ممنون و متشکر !!!