نوشته شده توسط
h_jafarnezhad
من کد رو این طوری نوشتم
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 و ... خلاص میشید.
موفق باشید.