PDA

View Full Version : نوشتن queryدر C#‎



parva64
شنبه 03 مهر 1389, 17:20 عصر
سلام
خسته نباشيد
من يك سوال داشتم : اينكه يك رشته رو از ورودي با textbox گرفتم و با تابع split تجزيه كردم به يك آرايه رشته اي ريختم


protected void Button1_Click(object sender, EventArgs e)
{
string s = TextBox1.Text;
const char space = ' ';
const char plas = '+';
int i = 0;
string [] kelidi=new string[10]
{"","","","","","","","","",""
};

char[] delimiters = new char[]
{
space,plas};
// string output = " ";
// int ctr = 1;
foreach (string substring in s.Split(delimiters))
{
kelidi[i] = substring;
i++;



}

حالا مي خواهم مقادير اين آرايه رو با يك فيلد پايگاه دادم مقايسه كنم اينكار رو چطور انجام بدم
ممنون ميشم اگه كمكم كنيد

صباح فتحی
شنبه 03 مهر 1389, 17:36 عصر
مشکل شما کاربا دیتابیس هست|؟نمیتونید یک فیلدروبخونید؟درسته؟

علیرضا حسن زاده
شنبه 03 مهر 1389, 18:43 عصر
دو تا روش برا این کار دارید اول اینکه دونه دونه آیتم های آرایه رو به SQL ارسال کنید و نتیجه رو ببنید تو برنامه که سرعتش نسبتا کمه
روش دوم کل آیتم هارو به صورت رشته به SQL ارسال کنید و اونجا روش عملیات تجزیه رو انجام بدین که مقایسه رو هم توام می تونید انجام بدید که چون اجرای مکرر دستورات و ارتباط با SQL رو نداره سرعتش خیلی بیشتر از روش برنامه نویسی تو زبان برنامه سازی هست

manij_mhm
شنبه 03 مهر 1389, 19:06 عصر
سلام.
یه روش دیگه هم هست که می تونید داده های مورد نظرتون رو از پایگاه داده بخونید و در c# مقایسه رو انجام بدید.
موفق باشید.

parva64
دوشنبه 05 مهر 1389, 11:20 صبح
مشکل شما کاربا دیتابیس هست|؟نمیتونید یک فیلدروبخونید؟درسته؟

با سلام
نه مشكل من همونطور كه گفتم اينه كه چطور هر كدوم از خانه هاي آرايه رشته اي رو با فيلدي از جدول ديتابيس مقايسه كنم.

parva64
دوشنبه 05 مهر 1389, 11:23 صبح
دو تا روش برا این کار دارید اول اینکه دونه دونه آیتم های آرایه رو به SQL ارسال کنید و نتیجه رو ببنید تو برنامه که سرعتش نسبتا کمه
روش دوم کل آیتم هارو به صورت رشته به SQL ارسال کنید و اونجا روش عملیات تجزیه رو انجام بدین که مقایسه رو هم توام می تونید انجام بدید که چون اجرای مکرر دستورات و ارتباط با SQL رو نداره سرعتش خیلی بیشتر از روش برنامه نویسی تو زبان برنامه سازی هست
ممنون ميشم اگه راهنمايي بيشتري در مورد روش دوم بكنيد اينكه چطور اين كار رو انجام بدم به نظرم روش خوبي مياد.

اَرژنگ
دوشنبه 05 مهر 1389, 11:49 صبح
ممنون ميشم اگه راهنمايي بيشتري در مورد روش دوم بكنيد اينكه چطور اين كار رو انجام بدم به نظرم روش خوبي مياد.
منظور از مقایسه چیه؟ فرض کنیم که۲ آرایه دارید، که یکیش مقادیر را از داتابیس گرفته، حالا با این ۲ رشته چکار میخواهید انجام بدید؟
اصلاً مشکلتان چیه ؟ نمیتونید از داتابیس مقدار بگیرید یا اینکه نمیدانید چطوری مقایسه کنید؟

صباح فتحی
دوشنبه 05 مهر 1389, 11:59 صبح
منظور از مقایسه چیه؟ فرض کنیم که۲ آرایه دارید، که یکیش مقادیر را از داتابیس گرفته، حالا با این ۲ رشته چکار میخواهید انجام بدید؟
اصلاً مشکلتان چیه ؟ نمیتونید از داتابیس مقدار بگیرید یا اینکه نمیدانید چطوری مقایسه کنید؟
نقل قول:
نوشته شده توسط صباح فتحی http://www.barnamenevis.org/forum/images/buttons/viewpost.gif (http://www.barnamenevis.org/forum/showthread.php?p=1108744#post1108744)
مشکل شما کاربا دیتابیس هست|؟نمیتونید یک فیلدروبخونید؟درسته؟

با سلام
نه مشكل من همونطور كه گفتم اينه كه چطور هر كدوم از خانه هاي آرايه رشته اي رو با فيلدي از جدول ديتابيس مقايسه كنم

اَرژنگ
دوشنبه 05 مهر 1389, 12:15 عصر
نقل قول:
نوشته شده توسط صباح فتحی http://www.barnamenevis.org/forum/images/buttons/viewpost.gif (http://www.barnamenevis.org/forum/showthread.php?p=1108744#post1108744)
مشکل شما کاربا دیتابیس هست|؟نمیتونید یک فیلدروبخونید؟درسته؟

با سلام
نه مشكل من همونطور كه گفتم اينه كه چطور هر كدوم از خانه هاي آرايه رشته اي رو با فيلدي از جدول ديتابيس مقايسه كنم
همانطوری که گفتم فرض کنیم که مقادیر را در اختیار دارید، یعنی اینکه مقادیر را از داتابیس گرفتید و ۲ تا آرایه دارید، یکیش مقادیرش را از داتابیس گرفته و دیگری دستی از فرم مقداردهی شده.
حالا با این ۲ آرایه چیکار کنیم؟ چونکه مشکل گرفتن مقدار از داتابیس ندارید، پس فرض کنیم که مقادیر را گرفتید و در یک آرایه دیگر حاضر دارید.
حالا اینکه اولین خانه آرایه یک با اولین خانه آرایه ۲ را در دست داریم. منظورتان از مقایسه کنیم چیه؟ که همه مقادیر یکی هستند و یا چیزه دیگری؟
لطفاً مشکل اصلی را توضیح بدید.

ali_autumnal
دوشنبه 05 مهر 1389, 13:08 عصر
فیلد یا فیلدهای مورد نظر رو از دیتابیس بخونید در یک رشته یا آرایه ای از رشته ها ذخیره کنید. سپس در یک حلقه foreach این رشته ها رو مقایسه کنید.



For example:

string[] strRead=ReadDatabase(statement);

string[] strCMP=new string[] {"ali","Mary","sara","samaneh"};
int i=0;
foreach(string str in strRead)
if(str==strCMP[i++])
MessageBox.show(str +" is Found");





موفق باشید
علی پاییزی

parva64
دوشنبه 05 مهر 1389, 19:14 عصر
ببينيد من از طريق textbox رشته اي رو از ورودي مي خونم
ميخواهم كلمه به كلمه رشته رو تكه تكه كنم و هر تكه رو با فيلد كلمات كليدي كه در جدولي از پايگاه دادم دارم مقايسه كنم و id اون رو بدست بيارم
اگه بازم نامفهوم هستش مي تونم فايل تحليلي سيستم رو براتون بزارم
ممنون

parva64
دوشنبه 05 مهر 1389, 23:17 عصر
از دوستان كسي نيست كه كمكم كنه :متفکر:

ali_autumnal
دوشنبه 05 مهر 1389, 23:39 عصر
سلام
ببینید این بکار تون میخوره:




string[] strNew = new string[1000];
char[] strInput = textBox1.Text.ToCharArray();
int j = 0;
for (int i = 0; i < strInput.Length; i++)
{
while (i < strInput.Length && strInput[i] != ' ')
strNew[j] += strInput[i++];
++j;
}

موفق باشید
علی پاییزی

ali_autumnal
دوشنبه 05 مهر 1389, 23:43 عصر
این تابعی که نوشتم کلیه کلمات یه رشته رو با جدا کننده " " از هم جدا کرده در یک آرایه رشته ای قرار میده.

اَرژنگ
دوشنبه 05 مهر 1389, 23:45 عصر
ببينيد من از طريق textbox رشته اي رو از ورودي مي خونم
ميخواهم كلمه به كلمه رشته رو تكه تكه كنم و هر تكه رو با فيلد كلمات كليدي كه در جدولي از پايگاه دادم دارم مقايسه كنم و id اون رو بدست بيارم
اگه بازم نامفهوم هستش مي تونم فايل تحليلي سيستم رو براتون بزارم
ممنون
لطفاً بزارید، هر چی که کمکمان کند بکار میاد.

parva64
سه شنبه 06 مهر 1389, 00:03 صبح
این تابعی که نوشتم کلیه کلمات یه رشته رو با جدا کننده " " از هم جدا کرده در یک آرایه رشته ای قرار میده.
ممنون ولي مشكل من اين نيست چون دقيقا تو اولين پستم كد دستوراتي كه اين كار رو انجام ميده رو نوشتم و در ارتباط دادنش با sql مشكل دارم

ali_autumnal
سه شنبه 06 مهر 1389, 00:08 صبح
خوب این رو که تو پست 10 گفتم!!!

اَرژنگ
سه شنبه 06 مهر 1389, 00:09 صبح
ممنون ولي مشكل من اين نيست چون دقيقا تو اولين پستم كد دستوراتي كه اين كار رو انجام ميده رو نوشتم و در ارتباط دادنش با sql مشكل دارم

با استفاده از where in در Sql Server آشنایی دارید؟
http://msdn.microsoft.com/en-us/library/aa933220(v=SQL.80).aspx



Select id from Keywords where description in ['Key1' , 'Key2', 'KeyN]

parva64
جمعه 07 آبان 1389, 13:07 عصر
دو تا روش برا این کار دارید اول اینکه دونه دونه آیتم های آرایه رو به SQL ارسال کنید و نتیجه رو ببنید تو برنامه که سرعتش نسبتا کمه
روش دوم کل آیتم هارو به صورت رشته به SQL ارسال کنید و اونجا روش عملیات تجزیه رو انجام بدین که مقایسه رو هم توام می تونید انجام بدید که چون اجرای مکرر دستورات و ارتباط با SQL رو نداره سرعتش خیلی بیشتر از روش برنامه نویسی تو زبان برنامه سازی هست

سلاملطف مي كنين در مورد روش دوم راهنمايي بيشتر بكنيد.

Reza_Yarahmadi
جمعه 07 آبان 1389, 16:13 عصر
سلام لطف مي كنين در مورد روش دوم راهنمايي بيشتر بكنيد.
روشی که آرژنگ گفتند به همین روش عمل میکنه. چیزی شبیه کد زیر

string sqlStr = @"Select
ID,
Description
From
Keywords
Where
Description IN(" + textBox1.Text.Replace(" ", ",").Replace("+", ",") + ")";
کوئری بالا لیست کلماتی که توی تکست باکس وجود داره رو برمیگردنه