زمان کنونی: ۰۳ آذر ۱۴۰۳, ۰۷:۴۷ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

نوشتن یه کوئری در سی شارپ

ارسال:
۱۹ مرداد ۱۳۹۱, ۰۷:۱۷ ب.ظ
Question نوشتن یه کوئری در سی شارپ
سلام
من دارم یه برنامه می نویسم با sql که نیاز داره سرورهای sql را توی یه combobox نمایش بده.
برای این کار یه کوئری بهم دادند و گفتند که اول توی sql امتحان کنم بعد در C#‎‎ به عنوان یه کوئری ازش استفاده کنم و خطوطش رو از هم جدا نکنم
اما من نمی دونم چه طوری توی C#‎‎ اینو بنویسم. شاید خیلی راحت باشه اما من خیلی کم با بانک های اطلاعاتی کار کردم و نمی دونم چه کار باید بکنم
ممنون میشم بهم بگید که چه طوری باید ازش استفاده کنم و کدش رو هم برام واضع بنویسید یعنی حتی کانکشن استرینگشم بگید چی باید بنویسم ایا لوکال باشه آیا دیسابیسش باید مستر باشه ایا اصلا احتیاجی به کانکشن استرینگ هست و یه کم هم توضیح بدید
کد:
-- To allow advanced options to be changed.EXEC sp_configure'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
--Create Varible Of Table
Declare @servers TABLE(sname VARCHAR(255))
--Insert Result To Table
INSERT @servers  EXEC master..XP_CMDShell'OSQL -L'
--Delete From Table
DELETE @servers WHERE sname='Servers:' or sname is null
--Show Result
SELECT LTRIM(sname) FROM @servers



یه سوال دیگه هم داشتم اونم اینکه توی همین برنامه ای که گفتم به جز انتخاب سرور ها باید نوع authentication رو هم کاربر انتخاب کنه که یا windows authentication باشه یا sql server authentication که اگر دومی باشه باید از کاربر یوزرنیم و پسورد بگیره حالا مساله اینجاست که من نمی دونم که کاربر وقتی از هرکدوم اینا استفاده می کنه باید چه تغییری در connection string بدم لطفا در این مورد هم دقیق منو راهنمایی کنید.

خیلی ممنون
۱
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال:
۲۱ مرداد ۱۳۹۱, ۱۲:۴۸ ب.ظ (آخرین ویرایش در این ارسال: ۲۱ مرداد ۱۳۹۱ ۰۱:۰۱ ب.ظ، توسط samaneh_aftab.)
RE: نوشتن یه کوئری در سی شارپ
سلام دوست عزیز

اولا ابتدای دستوراتتون ، این خط را جا انداختید
EXEC sp_configure 'show advanced options', 1;

باید این را هم بنویسید

بعدش برای ساختن connection string دو تا radio button روی فرمتون بذارید. اگه کاربر sql autentication را انتخاب کرد، user,pass را ازش بخواهید. بعد برای ساختنش در یک تابع اینطوری بنویسید:
کد:
        public string get_con_str()
        {

                string cnstr = "";

                if (rb_windows.Checked)
                    cnstr = "Persist Security Info=True;";
                else
                    cnstr = "Persist Security Info=False;";

                cnstr+="Data Source="+drp_server_name.SelectedItem.Text;

              
                cnstr += cnstr + ";Initial Catalog="+txt_database_name.Text;

                if (rb_sql.Checked)
                {
                    cnstr += cnstr + ";User Id=" + txt_username.Text;

                    cnstr += ";Password=" + txt_password.Text;
                }


                return cnstr;
        }

برای نوشتن query بالا هم مهم نیست روی چه دیتابیسی باشید

فقط متن کوئری را در یک متغیر string بریزید و بعد مثل همه Select ها باهاش کار کنید
مثلا"
کد:
public void select_sql_procedure(string sp_name,List<parameter> param)
        {

            string query = "matne query delkhah";

            SqlConnection cn = new SqlConnection();
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();

            cmd.CommandText = query;
            da.SelectCommand = cmd;

            cn.ConnectionString =get_con_str();


            //connectionباز کردن
            if (cn.State != ConnectionState.Open)
                cn.Open();

            try
            {
                da.Fill(ds);
            }
            catch
            {
            }

            drp.Datasource=ds;
            drp.DataTextField = "fieldi ke mikhahid dar DropDownList neshan dahad";
            drp.DataValueField = "fieldi ke mikhahid dar barname ba an kar konid";
            drp.DataBind();

        }
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال:
۲۱ مرداد ۱۳۹۱, ۰۵:۳۲ ب.ظ
نوشتن یه کوئری در سی شارپ
خیلی ممنون از پاسخ کاملتون خدا میدونه چه قدر گیرش بودم
اما چندتا سوال واسه من پیش اومده
۱: اون خطی که گفتید چیه و کجاش باید بزارم چون این کوئری رو خودم ننوشتم و نمی دونم چیه
۲: Persist Security Info چیه و چیکار میکنه
۳: پس Integrated Security=SSPI رو کجاش میگذاریم
۴: مگه ترتیب نوشتن پارامترها توی کانشکن استرینگ مهم نیست؟
۵: cn.state چیه؟
۶: وقتی شما به کامبوباکس فیلد میدید ما که توی این کوئری فیلدی با نام مشخص نداریم!
۷:datavaluefield رو میشه دقیقا توضیح بدید که چه کار میکنه و چه فرقی با datatextfield داره
۸: من همینی که شما نوشتید رو نوشتم فقط به جای dataset از datatable استفاده کردم و datasource کامبوباکس رو به اون دادم و دیگه بقیه رو ننوشتم که فیلد بگیره و اینا بعد توی اجرا هیچی بهم نشون نداد حالا من نمی دونم مشکل از برنامه منه که چیزی نشون نمیده یا به خاطر اینکه من شبکه ندارم و لوکال هستم


بسیار ممنون از پاسخ شما
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال:
۲۲ مرداد ۱۳۹۱, ۰۸:۴۷ ق.ظ
RE: نوشتن یه کوئری در سی شارپ
خواهش میکنم
۱) اون خط را باید اول کوئری تون بنویسید. وگرنه خطا میده. یعنی دقیقا قبل از
کد:
-- To allow advanced options to be changed.EXEC sp_configure'show advanced options', 1

۲) مشخص میکنه windows authentication است یا sql server authentication
۳) اینو جا انداختم. میتونید این را هم به connection string تون اضافه کنید. برای قسمت windows authentication
۴) نه مهم نیست
۵)ما اول کار با دیتابیس باید کانکشن را باز کنیم. state به ما حالت کانکشن را میگوید. که اگر open است دیگه بازش نکنیم
۶)اون آخر کوئری تون که نوشتین
کد:
SELECT LTRIM(sname) FROM @servers

تبدیلش کنید به
کد:
SELECT LTRIM(sname) [color=#FF0000]as sname[/color] FROM @servers
بعد برای datatextfield و value field هردوش این sname را بنویسید

۷) ببینید مثلا ما ۱ جدولی داریم که شامل اسم و کد اشخاصه. میخواهیم کاربر ، اسم را ببینه ولی ما تو کدهامون با کد اشخاص کار میکنیم. اسم شخص میشه datatextfield که کاربر میبینه و data value field میشه کد اشخاص که کاربر نمیبینه ولی ما باهاش کار میکنیم

۸) این چیزی که من گفتم مال Asp.net است. اگه شما برنامه تون windows application است drop down ندارید. combo box دارید و روش پرکردنش متفاوته. تو اینترنت Search کنید. ببینید چطوری کومبو باکس را با data table پر میکنن

لوکال هم باشید، بازهم باید کومبو باکستون حداقل اسم سرور خودتون را نشون بده. نباید خالی باشه. کدتون را باید ببینم تا بفهمم مشکلتون از کجاست
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس‌گزاری شده توسط: programmer.z
ارسال:
۲۳ مرداد ۱۳۹۱, ۰۱:۴۸ ق.ظ
RE: نوشتن یه کوئری در سی شارپ
سلام
بازم خیلی ممنون از راهنمایی تون و ببخشید که من انقده پررو هستم آخه کسی نیست انقده خوب و کامل به سوالام جواب بده به خاطر همین حالا هم که شما جوابامو میدید من دیگه ول کن نیستم
اول اینکه من چون توی سی شارپ برنامه مو مینویسم بعد برای کامبوباکس ها datatextfield و datavaluefield نداره شایدم باشه اما من نمیدونم چیه.
حالا من کدمو برای شما میگذارم تا ببینید
کد:
private void identity_server()
        {
            cmbserver.Items.Clear();
            RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL", false);
            foreach (string s in reg.GetValueNames())
                if (s == "MSSQLSERVER")
                    cmbserver.Items.Add(System.Net.Dns.GetHostName());
                else
                    cmbserver.Items.Add(@".\" + s);
            string strcom = "-- To allow advanced options to be changed." +
                            "EXEC sp_configure 'show advanced options', 1" +
                            "GO" +
                            "-- To update the currently configured value for advanced options." +
                            "RECONFIGURE" +
                            "GO" +
                            "-- To enable the feature." +
                            "EXEC sp_configure 'xp_cmdshell', 1" +
                            "GO" +
                            "-- To update the currently configured value for this feature." +
                            "RECONFIGURE" +
                            "GO" +
                            "--Create Varible Of Table" +
                            "Declare @servers TABLE(sname VARCHAR(255))" +
                            "--Insert Result To Table" +
                            "INSERT @servers  EXEC master..XP_CMDShell 'OSQL -L'" +
                            "--Delete From Table" +
                            "DELETE @servers WHERE sname='Servers:' or sname is null" +
                            "--Show Result" +
                            "SELECT LTRIM(sname) [color=#FF0000]as sname[/color] FROM @servers";
            SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True");
            SqlCommand com = new SqlCommand(strcom, con);
            con.Open();
            com.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable dt = new DataTable();
            da.Fill(dt);
            cmbserver.DataSource = dt;
            
        }
سوال بعدیم اینکه خب اطلاعات کانکشن استرینگ رو گرفت حالا رشته شو درست کرد اما اگه وقتی وصل شد اطلاعاتی که کاربر داده بود غلط بود خطا میگیره. اما نباید این خطاها رو به کاربر بده یعنی یه جوری می خوام برنامه خودش خطاها رو بگیره.
من برای اینکار خودم یه کد نوشتم اما نمی دونم درسته یا نه
این کدیه که نوشتم
کد:
SqlConnection con = new SqlConnection(constr);
            con.Open();
            try
            {
                MessageBox.Show("Success");
            }
            catch (DataException)
            {
                MessageBox.Show("Not success");
            }

دیگه اینکه این Persist Security Info دقیقا یعنی چی؟
و Integrated Security یعنی چی؟ چه فرقی می کنه که ssip بگیره یا true؟ اصلا کجا ssip میگیره کجا true؟


بازم یه عالمه ممنون از جواباتون
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال:
۲۳ مرداد ۱۳۹۱, ۱۱:۳۸ ق.ظ
RE: نوشتن یه کوئری در سی شارپ
اگر میخواید سرورهای اسکیوال سرور تو شبکه رو جستجو کنید با این دو خط کد که توضیح کاملش
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
اومده میتونید.

اون کوئری هم که نوشتید صحیحش این هست:

کد:
CREATE TABLE #servers(sname VARCHAR(255))
INSERT #servers (sname)
EXEC master..xp_CMDShell 'ISQL -L'
DELETE
FROM #servers
WHERE sname='Servers:'
OR sname IS NULL
SELECT LTRIM(sname)
FROM #servers
DROP TABLE #servers

اون دو خط اولی که نوشتید instance های SQL ای که رو سیستم تون نصب باشه رو بر میگردونه نه نام سرورها!

هان مشو نومید چون واقف نه ای از سر غیب
باشد اندر پرده بازی های پنهان غم مخور
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس‌گزاری شده توسط: p.parsaee
ارسال:
۲۳ مرداد ۱۳۹۱, ۰۱:۲۹ ب.ظ
نوشتن یه کوئری در سی شارپ
سلام
ممنون از جوابتون اما تا اونجایی که من فهمیدم اون لینکی که گذاشتید برای sql 2000 و ۲۰۰۵ هستش اما مال من ۲۰۰۸ هست

بعداینکه همونطور که گه توی تاپیک اول گفتم این کوئری رو خودم ننوشتم و نمیدونم یعنی چی یعنی اس کیو ال کار نکردم.
اما تا اونجایی که از حرفهای شما فهمیدم و کدها رو مقایسه کردم کد من با کد شما فرقی نداره و فقط چندتا خط کم داره

از اون گذشته کد من خطا نمیده و فقط من نمی دونم کار میکنه یا نه
اصلا یه سوال من که سیستمم لوکال هست و به شبکه وصل نیستم از کجا باید بفهمم که کدم توی شبکه درست کار میکنه و درست اجرا میده؟
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال:
۲۴ مرداد ۱۳۹۱, ۰۳:۲۶ ب.ظ (آخرین ویرایش در این ارسال: ۲۴ مرداد ۱۳۹۱ ۰۳:۴۲ ب.ظ، توسط samaneh_aftab.)
RE: نوشتن یه کوئری در سی شارپ
سلام. ببخشید من دیر جوابتونو دادم

اولا که منم کدهایی که نوشتم با C# است ولی تحت وب
مال شما windows application است
پس برای پر کردن کومبو باکستون اینطوری عمل کنید:
کد:
private void identity_server()
        {
            cmbserver.Items.Clear();
          
            string strcom = "-- To allow advanced options to be changed." +
                            "EXEC sp_configure 'show advanced options', 1" +
                            "GO" +
                            "-- To update the currently configured value for advanced options." +
                            "RECONFIGURE" +
                            "GO" +
                            "-- To enable the feature." +
                            "EXEC sp_configure 'xp_cmdshell', 1" +
                            "GO" +
                            "-- To update the currently configured value for this feature." +
                            "RECONFIGURE" +
                            "GO" +
                            "--Create Varible Of Table" +
                            "Declare @servers TABLE(sname VARCHAR(255))" +
                            "--Insert Result To Table" +
                            "INSERT @servers  EXEC master..XP_CMDShell 'OSQL -L'" +
                            "--Delete From Table" +
                            "DELETE @servers WHERE sname='Servers:' or sname is null" +
                            "--Show Result" +
                            "SELECT LTRIM(sname)as sname FROM @servers";

            SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True");
            SqlCommand com = new SqlCommand(strcom, con);
            con.Open();
            com.ExecuteNonQuery();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable dt = new DataTable();
            da.Fill(ds,dt);
            cmbserver.DataSource = dt;
            cmbserver.DisplayMember = "sname";
            cmbserver.ValueMember = "sname";

        }

بعد هم برای ساختن connection string جدید اینطور عمل کنید:
کد:
public string get_con_str()
        {

                string cnstr = "";

                if (rb_windows.Checked)
                    cnstr = "Persist Security Info=True;";
                else
                    cnstr = "Persist Security Info=False;";

                cnstr+="Data Source="+combo_server_name.SelectedValue.ToString();

              
                cnstr += cnstr + ";Initial Catalog="+txt_database_name.Text;

                if (rb_sql.Checked)
                {
                    cnstr += cnstr + ";User Id=" + txt_username.Text;

                    cnstr += ";Password=" + txt_password.Text;
                }


                return cnstr;
        }

وقتی هم شما روی لوکال دارید کار میکنید، کومبو باکستون فقط اسم سیستم شما را نشون میده. چون توی شبکه نیستید که اسم بقیه را هم نشون بده

در مورد اون یکی سوالتون هم ببینید این به دردتون میخوره:

مایکرسافت برای امنیت بیشتر در استفاده سیستم عامل های مختلف از صفحات وب، از یک واسط مهیا کننده امنیتی Security Support Provider Interface (SSPI) استفاده می کند. البته اگر مقدار این فیلد را true بدهیم به این معنی است که برای ورود به بانک از سیستم عامل مجوز بگیرد و اگر مقدار آن false باشد یعنی برای ورود بایداز بانک اطلاعاتی مجوز بگیریم که اگر access باشد باید رمزی که به فایل اختصاص دادیم را بنویسیم و اگر sql باشد باید نام کاربری و رمز عبوری که در قسمت users تعریف شده است را بنویسیم.
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس‌گزاری شده توسط: programmer.z
ارسال:
۲۵ مرداد ۱۳۹۱, ۰۱:۵۷ ب.ظ (آخرین ویرایش در این ارسال: ۲۶ مرداد ۱۳۹۱ ۱۲:۲۱ ق.ظ، توسط programmer.z.)
Rainbow نوشتن یه کوئری در سی شارپ
سلام
ممنون از جواب کاملتون. در مورد کدی که دادید باید بگم که خطا داره توی چندتا خط
۱:
کد:
da.Fill(ds,dt);
چون پارامتر دوم باید از نوع رشته ای باشد. و وقتی یکی از این ها رو پاک می کنیم درست میشه.

۲:
کد:
cmbserver.ValueMember = "sname";
که در واقع خطای زمان اجرا دارد که این هستش خطاش:

Cannot bind to the new display member.
Parameter name: newDisplayMember

اما وقتی من این خط رو پاک می کنم دیگه خطا نداره و بعد اینکه با این حال من توی کامبوباکسم هیچ چیزی دریافت نمی کنم!Huh
من که پاک گیج شدم نمیدونم چیکار کنم من وقتی کوئری رو توی sql مینویسم اجرا میشه اما مینویسه --NONE-- اما وقتی به اینترنت مینویسم دوتا فیلد بهش اضافه میشه یکی (local) و یکی دیگه اسم سیستم هستش

اما توی برنامه هیچ اتفاقی نمی افته!!!!

خواهش یکی به من کمک کنهHuhSadUndecided
من واقعا موندم چیکار کنم!Huh
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال: #۱۰
۲۸ مرداد ۱۳۹۱, ۱۲:۳۴ ب.ظ
نوشتن یه کوئری در سی شارپ
(۲۵ مرداد ۱۳۹۱ ۰۱:۵۷ ب.ظ)programmer.z نوشته شده توسط:  ۱:
کد:
da.Fill(ds,dt);
چون پارامتر دوم باید از نوع رشته ای باشد. و وقتی یکی از این ها رو پاک می کنیم درست میشه.

درسته. این dt را پاک کنید و این ۲ خط را اینطوری بنویسید:
کد:
da.Fill(ds,"dt");
                cmbserver.DataSource = ds.Tables["dt"];
در اینصورت اون خطای desplay member را هم نمیده.

برنامه تون را هم تست کردم

چون شما متن کوئری تون را توی ۱ رشته دارین میریزین، همشو داره پشت سر هم میچسبونه. برای همین انگار داره ۱ خط کامنت را اجرا میکنه
بهتره ۱ همچین دستوری را در stored procedure بنویسید
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس‌گزاری شده توسط: programmer.z
ارسال: #۱۱
۰۲ شهریور ۱۳۹۱, ۰۳:۲۸ ق.ظ
RE: نوشتن یه کوئری در سی شارپ
خیلی ممنون از جوابهای دوستان عزیز همچنین تشکر مخصوص از samaneh_aftab متاسفانه من نمیدونم sp دقیقا چی هست و در این مواقع چه طوری استفاده میشه اما به جواب خودم رسیدم
برای بدست آوردن نام سرورهای sql یا به عبارت بهتر لیست کردن سرورهای sql در یک کامبوباکس میتونیم از این کوئری استفاده کنیم:
کد:
Declare @servers TABLE(sname VARCHAR(255))
INSERT @servers  EXEC master..XP_CMDShell 'OSQL -L'
DELETE @servers WHERE sname='Servers:' or sname is null
SELECT LTRIM(sname) FROM @servers

اما خب اینکه این کوئری رو چه طوری به زبان c# بنویسیم هم به این صورت هست:

کد:
private void identity_server()
        {
            SqlConnection con = new SqlConnection("Data Source=LocalHost;Initial Catalog=master;Integrated Security=True");
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "Declare @servers TABLE(sname VARCHAR(255))      " +
                "INSERT @servers  EXEC master..XP_CMDShell 'OSQL -L'           " +
                "DELETE @servers WHERE sname='Servers:' or sname is null       " +
                "SELECT LTRIM(sname) as sname FROM @servers";
            SqlDataAdapter da = new SqlDataAdapter(com);
            con.Open();
            int i = com.ExecuteNonQuery();
            DataSet dt = new DataSet();
            da.Fill(dt);
            cmbserver.DataSource = dt.Tables[0];
            cmbserver.DisplayMember = "sname";
            cmbserver.ValueMember = "sname";
            con.Close();
            if (cmbserver.Text == "-- NONE --")
            {
                cmbserver.DataSource = null;
                cmbserver.Items.Add("(local)");
                cmbserver.SelectedIndex = 0;
            }
        }

کسایی که تازه دارن یه همچین چیزی میبینن میخواستم بهشون بگم هنگ نکنند Tongue کدش خیلی راحته الان براشون توضیح میدم:
این یک تابع هست که نه ورودی داره نه خروجی توی این تابع ما فقط یه چیزی رو نشون میدیم

خط اول: یه کانکشن از نوع sql میسازیم و از طریق سرور محلی یعنی سیستم خودمون بهش وصل میشیم که همون عبارت LocalHost میشه و به بانک اطلاعاتی master وصل میشیم

خط دوم: یه متغییر از نوع sqlcommand درست میکنیم که توش دستورات رو بنویسیم.

خط سوم: connection رو به command اختصاص میدیم.

خط چهارم: متن همون کوئری رو که اون بالا نوشتیم به command اختصاص میدیم. فاصله گذاشتم که دستورات با یه چوب رونده نشوند یعنی قاطی نشوند. و این خیلی مهمه باید حتما باشه چون ما اینجا مثل خود sql اینتر نمیتونیم داشته باشیم.

خط پنجم: یک DataAdapter درست میکنیم که این برنامه ها روی بانک اطلاعاتی اجرا کنه و دستورات و کانکشن رو که در com ریختیم بهش اختصاص میدیم. یعنی DataAdapter با استفاده از دستورات یا همون کوئری که داخل com ریختیم اطلاعات رو از بانک اطلاعاتی بازیابی می کند.

خط ششم: کانکشن رو باز میکنه.

خط هفتم: دستورات یا همون کوئری رو اجرا میکنه.

خط هشتم: یک DataSet میسازیم تا حاصل کارمون رو که در خط بعد اجرا کردیم و خروجی رو در اون بریزیم. که البته میشه به جای اون یک DataTable بسازیم. چندان تفاوتی در کد ما نمیکنه.

خط نهم: DataAdapter که اطلاعات رو بازیابی کرده توی DataSet میریزه و اونو پر میکنه. یعنی از این به بعد خروجی کار ما توی DataSet هست.
خط دهم: درواقع در این خط به منبع داده ای کامبوباکس، اولین جدول از DataSet رو اختصاص میدیم و بهش میگیم که داده های مورد نظر ما توی این جدول هستند.

خط یازدهم: نام اون ستون یا فیلدی که باید در کامبوباکس نمایش پیدا کند را به کامبوباکس اختصاص میدهیم.

خط دوازدهم: اون فیلدی که درواقع باهاش کارمیکنیم رو مینویسیم میشه گفت یه جور فیلد پس زمینه هستش. که میتونه یه چیز دیگه ای باشه اما ما اینجا چون همین یه فیلد رو داریم همینو مینویسیم. البته توی اینجا اگر ننوشتید هم اشکالی نداره.

خط سیزدهم: کانکشن رو میبندیم.

خط چهاردهم: چو که اگر مقدار -- NONE -- رو نشون بده ما بعدا با مشکل برخورد میکنیم و همچنین وقتی که ما به هیچ شبکه ای وصل نیستیم این رو نشون میده با وجود اینکه ما لوکال خالی هستیم (یعنی ما لوکال هستیم اما این هیچی نشون نمیده! اما فقط کافیه به اینترنت وصل بشید اونوقت هم لوکال مینویسه هم نام سیستم خودتون رو، حداقل مال من که اینطوری بوده). چون همه این اتفاقا میافته ما گفتیم اگر نشون داد -- NONE -- :

خط پانزدهم: اول اینکه به هیچ منبع داده ای دیگه وصل نباشه! چون اگر همچنان به منبع داده وصل باشه ما نمیتونیم به کامبوباکس گزینه ای اضافه کنیم. پس اتصالمون رو قطع میکنیم.

خط شانزدهم: حالا که کامبوباکس خالی شده یه گزینه ی (local) بهش اضافه کنه تا در اتصال به کامپیوتر محلی (خودمان) وقتی به شبکه ای وصل نیستیم مشکل پیش نیاد.

خط هفدهم: همان گزینه ای که اضافه کردیم را نمایش میدهیم.

امید وارم که کسایی که مثل من هیچی نمیدونستند فهمیده باشندBig Grin
و همچنین از اساتید بزرگوار که فکر میکنند که توضیح واضحات دادم هم معذرت میخوام Blush
۰
۰
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس‌گزاری شده توسط: samaneh_aftab


موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  استخدام برنامه نویس یا کارآموز برنامه نویسی سی شارپ Hesitant_Girl ۰ ۱,۷۹۱ ۲۰ شهریور ۱۴۰۰ ۱۲:۰۲ ب.ظ
آخرین ارسال: Hesitant_Girl
  در نوشتن چند جمله انگلیسی نیاز به کمک دارم fa_karoon ۰ ۱,۶۹۷ ۰۳ شهریور ۱۴۰۰ ۰۱:۰۹ ب.ظ
آخرین ارسال: fa_karoon
  نوشتن مقاله به صورت گروهی osho ۰ ۲,۰۳۶ ۱۶ آبان ۱۳۹۹ ۱۱:۵۵ ق.ظ
آخرین ارسال: osho
  تعداد روش های نوشتن عدد n ss311 ۲ ۳,۳۴۳ ۱۳ بهمن ۱۳۹۸ ۰۵:۲۷ ب.ظ
آخرین ارسال: ss311
Sad راهنمایی برای نوشتن پایان نامه کمک!!!!!!! Sarabeh ۱ ۲,۷۲۵ ۱۴ آذر ۱۳۹۸ ۰۲:۳۳ ق.ظ
آخرین ارسال: sirvan.t
  کمک در نوشتن پایان نامه کارشناسی ارشد amin181a ۱ ۲,۷۰۰ ۱۳ خرداد ۱۳۹۷ ۱۰:۰۹ ق.ظ
آخرین ارسال: سیستم عامل
  نوشتن کد (زبان 'Prolog) برای پیدا کردن تمام راسهای مجاور یک راس ss311 ۰ ۱,۴۹۹ ۱۸ آبان ۱۳۹۶ ۰۱:۱۹ ب.ظ
آخرین ارسال: ss311
  ایده برای نوشتن مقاله در حوزه ی شبکه ۲۰۱۲s ۳ ۳,۹۲۸ ۰۶ آبان ۱۳۹۶ ۱۲:۳۴ ق.ظ
آخرین ارسال: crevice
  آموزش SPSS برای نوشتن پایان نامه و مقالات علمی پژوهشی ali.arr74 ۰ ۲,۰۶۳ ۱۵ مهر ۱۳۹۶ ۰۸:۴۱ ب.ظ
آخرین ارسال: ali.arr74
  کاملترین اموزش نوشتن مقالات و پایان نامه haana38 ۰ ۲,۱۸۶ ۰۸ شهریور ۱۳۹۶ ۰۸:۳۵ ب.ظ
آخرین ارسال: haana38

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close