View Full Version : حرفه ای: نحوه پر کردن datagridview از طریق کد نویسی
  
h_jafarnezhad
چهارشنبه 25 شهریور 1394, 10:57 صبح
نحوه ارسال کوئری به  گرید از طریق کد نویسی
محمد رضا فاتحی
چهارشنبه 25 شهریور 1394, 11:22 صبح
سلام...این روش سنتی ado روش های بهتر و سریعتر هم هست مثلا EF
  
            SqlConnection con=new SqlConnection("connectionstr");
            string command = "select name,famil from stdtable";
            SqlDataAdapter da=new SqlDataAdapter(command,con);
            DataTable dt = new DataTable();
            try
            {
                con.Open();
                da.Fill(dt);
                con.Close();
                dataGridView2.DataSource = dt;
            }
            catch (Exception)
            {
                
                throw;
            }
h_jafarnezhad
پنج شنبه 26 شهریور 1394, 17:23 عصر
من کد رو این طوری نوشتم 
    string s = textBox1.Text;
            Class1.con.Open();
            Class1.com.Connection = Class1.con;
            Class1.com.CommandText = "SELECT codeposti  FROM [mobile_list] WHERE  (city = '"+ s +"') GROUP BY codeposti ORDER BY codeposti";
            OleDbDataAdapter da = new OleDbDataAdapter(Class1.com.ToString(), Class1.con);
            System.Data.DataTable dt = new System.Data.DataTable();
            da.Fill(dt);
            Class1.con.Close();
            dataGridView1.DataSource = dt;
این خطا رو میده Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
h_jafarnezhad
پنج شنبه 26 شهریور 1394, 17:42 عصر
الان به جای این که بریزم تو کامند ریختم تو یک متغیر رشته ای الان این خطا رو میده
No value given for one or more required parameters.
h_jafarnezhad
پنج شنبه 26 شهریور 1394, 17:42 عصر
لازمه که قسمت شرط توسط کاربر پر بشه چی کار کنم
h_jafarnezhad
پنج شنبه 26 شهریور 1394, 18:04 عصر
یکی جواب بده کارم گیره
veniz2008
جمعه 27 شهریور 1394, 01:55 صبح
من کد رو این طوری نوشتم 
    string s = textBox1.Text;
            Class1.con.Open();
            Class1.com.Connection = Class1.con;
            Class1.com.CommandText = "SELECT codeposti  FROM [mobile_list] WHERE  (city = '"+ s +"') GROUP BY codeposti ORDER BY codeposti";
            OleDbDataAdapter da = new OleDbDataAdapter(Class1.com.ToString(), Class1.con);
            System.Data.DataTable dt = new System.Data.DataTable();
            da.Fill(dt);
            Class1.con.Close();
            dataGridView1.DataSource = dt;
این خطا رو میده Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
سلام.
این سبک کوئری نوشتن سال هاست که منقرض شده و تعجب کردم از اینکه هنوزم از این روش ها استفاده میشه.
این مدل که شما کوئری نوشتی هم راحت قابل هــــــک شدن هست و هم اینکه ست کردن کوتیشن و دابل کوتیشن ها کار مشکلی هست. بهتره از پارامترها استفاده کنید:
روش خودتون :
Class1.com.CommandText = "SELECT codeposti  FROM [mobile_list] WHERE  (city = '" + s + "')" + " GROUP BY codeposti ORDER BY codeposti";
استفاده از پارامترها :
Class1.com.CommandText = "SELECT codeposti  FROM [mobile_list] WHERE  city = @city GROUP BY codeposti ORDER BY codeposti";
            da.SelectCommand.Parameters.AddWithValue("@city", textBox1.Text.Trim());
توجه : اولین ورودی DataAdapter هم باید دستور sql شما باشه. یعنی اولین ورودی رو باید برایر دستور sql قرار بدید (آیا Class1.com.ToString همون کوئری sql شما هست؟؟؟!!!) :
OleDbDataAdapter da = new OleDbDataAdapter(Class1.com.ToString(), Class1.con);
ولی در کل برید سمت استفاده از Entity Framework . هم حجم کدنویسی کمتری خواهید داشت، هم دستتون بازتره و امکانات بیشتری در اختیار دارید و مهمتر از همه از شر DataReader و DataTable و ... خلاص میشید.
موفق باشید.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.