PDA

View Full Version : کد ارتباط کمبوباکس با جدول دیتابیس



zahra6377
شنبه 23 دی 1391, 09:40 صبح
سلام
من با این کد میخوام در کمبوبکس cmtanzim مقدار name جدول tanzim از دیتتابیس رو نشون بدم.بنظرتون کجای کد مشکل داره که این ارتباط برقرار نمیشه؟



static SqlConnection con = new SqlConnection(@"Data Source=.\\SQLEXPRESS\NIK; AttachDbFilename=" + Application.StartupPath + "\\iranamlak.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True");
SqlDataAdapter da = new SqlDataAdapter("", con);
DataSet ds = new DataSet();
da.SelectCommand.CommandText = "select * from tanzim ";
da.Fill(ds,"tanzim");
cmtanzim.DataSource = ds;
cmtanzim.DisplayMember = "tanzim.name";
cmtanzim.Refresh();


ممنون

morteza271
شنبه 23 دی 1391, 10:08 صبح
به تایپیک زیر مراجعه کنید :
http://barnamenevis.org/showthread.php?378016-%DA%A9%D8%A6%D9%88%D8%B1%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-combobox

omid_csh
شنبه 23 دی 1391, 10:16 صبح
سلام
به اینصورت
cmtanzim.DataSource = ds.Tables[0];
یا
cmtanzim.DataSource = ds.Tables["tanzim"];

zahra6377
شنبه 23 دی 1391, 17:34 عصر
ممنون
ولی کار نمیکنه؟میشه کد کاملشو واسم بذارین؟

morteza271
شنبه 23 دی 1391, 17:51 عصر
ممنون
ولی کار نمیکنه؟میشه کد کاملشو واسم بذارین؟

چه کدی نوشتین که کار نمیکنه؟؟
کدتون رو بذارین...

zahra6377
شنبه 23 دی 1391, 18:12 عصر
static SqlConnection con = new SqlConnection(@"Data Source=.\\SQLEXPRESS\NIK; AttachDbFilename=" + Application.StartupPath + "\\iranamlak.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True");
SqlDataAdapter da = new SqlDataAdapter("", con);


DataSet ds = new DataSet();

da.SelectCommand.CommandText = "select * from tanzim ";
da.Fill(ds,"tanzim");
cmtanzim.DataSource = ds.Tables["tanzim"];
cmtanzim.DisplayMember = "tanzim.name";
cmtanzim.Refresh();

morteza271
شنبه 23 دی 1391, 18:17 عصر
کد زیر رو در انتهای کدتون قرار بدین ببینید که اصلا داده ای از دیتابیس خونده میشه یا نه :
MessageBox.Show(ds.Tables["tanzim"].Rows.Count.ToString());

خطایی که نمیده، نه؟؟

zahra6377
شنبه 23 دی 1391, 18:20 عصر
نه خطا نمیده،این رو هم که گذاشتم تغییری نکرد از کجا باید بفهمم که اطلاعات خونده میشه یا نه؟

zahra6377
شنبه 23 دی 1391, 18:23 عصر
الان این کدو که اضافه کردم این ارور روی
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
روی این تکه کد میده.
da.Fill(ds,"tanzim");

danialafshari
شنبه 23 دی 1391, 18:28 عصر
الان این کدو که اضافه کردم این ارور روی
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
روی این تکه کد میده.
da.Fill(ds,"tanzim");


خطای کانکشن استرینگه (Connection String)

morteza271
شنبه 23 دی 1391, 18:31 عصر
نه خطا نمیده،این رو هم که گذاشتم تغییری نکرد از کجا باید بفهمم که اطلاعات خونده میشه یا نه؟
اون کدی که گذاشتم رو توی کدتون اضافه کردین؟
توی پیامی که نشون میده چه عددی رو نشون میده؟؟


الان این کدو که اضافه کردم این ارور روی
اون خطا رو هم همونطور که دوستمون گفتن به خاطر کانکشن استرینگتونه که خطا میده!

zahra6377
شنبه 23 دی 1391, 18:35 عصر
یه عدد 26 توش داره ،کانکشن استرینگمو چطوری باید تغییر بدم؟

morteza271
شنبه 23 دی 1391, 18:40 عصر
برای کانکشن استرینگ به کد خودتون دقت کنید :
static SqlConnection con = new SqlConnection(@"Data Source=.\\SQLEXPRESS\NIK; AttachDbFilename=" + Application.StartupPath + "\\iranamlak.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True");
اون متنی که به عنوان پارامتر به sqlConnection پاس دیدن همون کانکشن استرینگ هست که شما با اون به بانک اطلاعاتی متصل می شوید.

فکر کنم اگه این خط از کدتون
cmtanzim.DisplayMember = "tanzim.name";
رو به صورت زیر تغییر بدین درست بشه :
cmtanzim.DisplayMember = "name";

البته مطمئن نیستم و یه حدس بود!!!

zahra6377
شنبه 23 دی 1391, 18:50 عصر
خوب یه سوال
این تکه
Source=.\\SQLEXPRESS\NIK;
همینطوره درسته یا اینکه NIK رو بردارم یا SQLEXPRESS رو یه چیز دیگه بنویسم
و این تکه
\\iranamlak.mdf;
رو درست نوشتم یا اینکه مثلا اگه فایل دیتابیس توی فولدر پروژم هست آدرس اون فولدر رو بدم و اگه این درسته مثلا اینجوری بنویسم درسته؟
"D:\project\c#\amlak\iranamlak.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True");

morteza271
شنبه 23 دی 1391, 19:13 عصر
معمولا زمانیکه از نسخه express اس کیو ال استفاده میشه فکر کنم بهترین حالت کانکشن استرینگ به صورت زیر باشه :
"data source=.\\sqlexpress;attachdbfilename=|datadirecto ry|\\YourDBName.mdf;integrated security=true; user instance=true"
البته در اینجا به جای YourDBName اسم دیتابیس خودتون رو قرار بدین.
موفق باشید.

zahra6377
شنبه 23 دی 1391, 19:39 عصر
الان این کانکشن استرینگ رو که گذاشتم
میاد به این تکه کدم گیر میده
private void pictureBox1_Click(object sender, EventArgs e)
{
frm_sabt sabt = new frm_sabt();
sabt.ShowDialog();
}
و این ارور رو میده
The type initializer for 'amlak.frm_sabt' threw an exception.
System.TypeInitializationException was unhandled
Message="The type initializer for 'amlak.frm_sabt' threw an exception."
Source="amlak"
TypeName="amlak.frm_sabt"
StackTrace:
at amlak.frm_sabt..ctor()
at amlak.Form1.pictureBox1_Click(Object sender, EventArgs e) in D:\project\c#\amlak\amlak\Form1.cs:line 165
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at amlak.Program.Main() in D:\project\c#\amlak\amlak\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context( Object state)
at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: System.ArgumentException
Message="Invalid value for key 'attachdbfilename'."
Source="System.Data"
StackTrace:
at System.Data.SqlClient.SqlConnectionString..ctor(St ring connectionString)
at System.Data.SqlClient.SqlConnectionFactory.CreateC onnectionOptions(String connectionString, DbConnectionOptions previous)
at System.Data.ProviderBase.DbConnectionFactory.GetCo nnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
at System.Data.SqlClient.SqlConnection.ConnectionStri ng_Set(String value)
at System.Data.SqlClient.SqlConnection.set_Connection String(String value)
at System.Data.SqlClient.SqlConnection..ctor(String connectionString)
at amlak.frm_sabt..cctor() in D:\project\c#\amlak\amlak\frm_sabt.cs:line 16
InnerException:

morteza271
شنبه 23 دی 1391, 19:55 عصر
من نمیدونم کد شما چطوریه و متاسفانه بیشتر از این نمیتونم راهنماییتون کنم.
ولی خب احتمالا داخل کلاس سازنده یا رویداد Load فرم frm_sabt کدی نوشتین که خطا داره و به نظرم بهترین راه برای اینکه بتونید مشکلتون رو پیدا کنید اینه که برنامتون رو تریس(خط به خط) کنید تا بهتر متوجه بشین که داره چه اتفاقی میفته...