PDA

View Full Version : حرفه ای: نحوه پر کردن datagridview از طریق کد نویسی



h_jafarnezhad
چهارشنبه 25 شهریور 1394, 09:57 صبح
نحوه ارسال کوئری به گرید از طریق کد نویسی

محمد رضا فاتحی
چهارشنبه 25 شهریور 1394, 10: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, 16: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, 16:42 عصر
الان به جای این که بریزم تو کامند ریختم تو یک متغیر رشته ای الان این خطا رو میده
No value given for one or more required parameters.

h_jafarnezhad
پنج شنبه 26 شهریور 1394, 16:42 عصر
لازمه که قسمت شرط توسط کاربر پر بشه چی کار کنم

h_jafarnezhad
پنج شنبه 26 شهریور 1394, 17:04 عصر
یکی جواب بده کارم گیره

veniz2008
جمعه 27 شهریور 1394, 00: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 و ... خلاص میشید.
موفق باشید.