PDA

View Full Version : برگردانندن جواب جستجو و استفاده از ان



googoli
دوشنبه 14 آذر 1390, 16:43 عصر
با سلام خدمت اساتید
من زبان سی شارپ رو تازه شروع کردم و الان در ارسال جواب جستجو در بانک یک مشکل دارم و مشکل من از این قرار است که :
مثلا من می خوام در جدول user یک جستجو انجام بدم با استفاده از روش Stored Procedure ولی نمی دونم وقتی که این جستجو انجام شد چطوری می تونم جوابم رو Return کنم به برنامه اگر دوستان راهنمایی کنن ممنون میشم :قلب:در ضمن من خواندن اطلاعاتم رو با روش کاملا دستی انجام دادم

mohammad272005
سه شنبه 15 آذر 1390, 01:16 صبح
اگه صورت سوال رو درست فهمیده باشم، به تعداد انسانها راه داری. تکنولوزیهای مختلف. چون مبتدی هستی، فعلا پیشنهاد من استفاده از تکنولوزی ADO.NET هست. کد زیر یه نمونه کد برای اینکاره:
using (SqlConnection connection = new SqlConnection("[your connectionstring]"))
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "GetUserList";
using (SqlDataReader reader = command.ExecuteReader())
while (reader.Read())
{
String username = Convert.ToString(reader["UserName"]);
// Now continue reading qeury result
}
}

ali_habibi1384
سه شنبه 15 آذر 1390, 12:59 عصر
اگر ميخواي سرعت برنامه ات بالاتر بياد و از مراجعات مكرر و ارسالهاي بيهوده اس كيو ال جلوگيري كني وقتي فرم جستجو باز شد كليه اطلاعات رو يكبار بفرست و ديتا تيبلت رو پر كن بعد از اون شما فقط با متد defaultview ديتا تيبلت اطلاعات گريد رو پر و خالي ميكني و ديگه نياز به مراجعه به اس كيو ال بيچاره نداري.شبكه ات هم الكي شلوغ نميشه.

googoli
سه شنبه 15 آذر 1390, 18:53 عصر
اگر ميخواي سرعت برنامه ات بالاتر بياد و از مراجعات مكرر و ارسالهاي بيهوده اس كيو ال جلوگيري كني وقتي فرم جستجو باز شد كليه اطلاعات رو يكبار بفرست و ديتا تيبلت رو پر كن بعد از اون شما فقط با متد defaultview ديتا تيبلت اطلاعات گريد رو پر و خالي ميكني و ديگه نياز به مراجعه به اس كيو ال بيچاره نداري.شبكه ات هم الكي شلوغ نميشه.
ممنون از راهنمایی شما ولی کاش یه نمونه کد که این کار رو انجام میده برای یادگیری بیشتر برای من میگذاشتید مثلا مقدار فیلد عنوان رو جستجو کنه و مقدار رو نشون بده

googoli
سه شنبه 15 آذر 1390, 20:42 عصر
من اینطوری اطلاعات رو به دیتا تیبل ریختم ولی نحوه استفاده از اون رو بلد نیستم

objcon.sqlquery = "Exec strptest";
objcon.Open();
objcon.Dadapter = new SqlDataAdapter(objcon.sqlquery, objcon.con);
objcon.Dadapter.Fill(objcon.Dset, "TblUser");
objcon.Dtable = objcon.Dset.Tables["TblUser"];
dgv.DataSource = objcon.Dtable;
objcon.Close();


البته من این کار رو برای ابدیت کردن یوزرم می خوام تابع که کاربر رو اضافه می کنه نوشتم ولی تو تابع ابدیتش موندم
این تابع هست

private Boolean InsertUser(string name,string pass)
{
try
{
objcon.cmd = new SqlCommand("CreateUser");
objcon.cmd.Connection = objcon.con;
objcon.Open();
objcon.cmd.CommandType = CommandType.StoredProcedure;
objcon.cmd.Parameters.Add("@username", SqlDbType.NVarChar).Value = name;
objcon.cmd.Parameters.Add("@pass", SqlDbType.NVarChar).Value = pass;
objcon.Dadapter.InsertCommand = objcon.cmd;
objcon.cmd.ExecuteNonQuery();
objcon.con.Close();
return true;
}
catch
{
return false;
}
}


و پست اولم رو به این خاطر گذاشتم که نمی دونستم چطور باید پسوردی که یوزر به عنوان پسورد قدیمی وارد میکنه با پسوردی که در بانک اس کیوال من هست چک کنم که ببینم ایا با هم همخوانی دارند یا نه اگر همخوانی نداشت بهش یه پیغام بدم و بگم پسوردش اشتباه هست

ali_habibi1384
چهارشنبه 16 آذر 1390, 13:29 عصر
واسه آپديت هم مثل همين سه تا پارامترها(يوزر و پسورد قديمي و پسورد جديد) رو بفرست بعنوان ورودي به SP بعد توي شرط آپديتت توي اس كيوال مينويسي
Where (UserName=@UserName and Password = @PasswordPre) خود اسكيوال تعداد خطهايي رو كه آپديت ميكنه بهت برميگردونه كافيه شما ببيني اگر مقدار برگشتي يك هست عمليات درست بوده وگرنه پيام بدي كه رمز غلط است.



publicint Update(string UserName, string Password, string PasswordPre)
{
return ExecuteNoneQuery(CommandType.StoredProcedure, "UserTbl_Update", newSqlParameter[]{
newSqlParameter( "@UserName",UserName),
newSqlParameter( "@Password",Password),
newSqlParameter( "@PasswordPre",PasswordPre)
});
}
مقدار برگشتي از تابع Update تعداد سطرهاي برگشتي هست.ديگه كامل كردن بقيه الگوريتمش با خودت