PDA

View Full Version : سوال: مشکل در جستجو و نمایش اطلاعات کاربر با استفاده از کلاس



veniz2008
چهارشنبه 21 دی 1390, 18:26 عصر
سلام،میخوام که برای جستجوی کاربر و نمایش اطلاعات اون (در صورت وجود) از یک کلاس و از طریق stored procedure این کار رو انجام بدم،برای اینکار یک textbox و یک gridview و یک دکمه روی صفحه گذاشتم و میخوام با زدن دکمه اطلاعات کاربر نمایش داده بشه( اگر وجود نداره پیغام مناسب صادر کنه)،مشکل اینجاست که هیچی رو نمایش نمیده،توی پردازه هم تعریف کردم اگر نام کاربری وجود داشت خروجی رو 1 بفرسته،من کدهایی رو که درون دکمه و درون کلاس ایجاد شده نوشتم میذارم،دوستان لطف کنن بگن مشکل کار کجاست؟(اینم بگم که برای نمایش همه کاربران مشکلی نداره و برنامه درست کار میکنه)
کدهای کلاس:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

/// <summary>
/// Summary description for myclass
/// </summary>
public class myclass
{

public static string Error = "";

SqlConnection con;
SqlCommand cmd;
SqlDataAdapter adapter;
int res;
public myclass()
{

con = new SqlConnection();
cmd = new SqlCommand();
adapter = new SqlDataAdapter();
cmd.Connection = con;
adapter.SelectCommand = cmd;
}
public void connect()
{
string cs = "Data Source=(local);Initial Catalog=Plants;Integrated Security=True";

try
{

con.ConnectionString = cs;
con.Open();

}
catch
{
Error += "خطاي 1100_خطا در اتصال به بانک اطلاعاتي";
}



}
public void disconnect()
{
con.Close();
}
public DataTable select(string userid)
{
DataTable dt = new DataTable();
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "search_user";
cmd.Connection = con;
SqlParameter username = new SqlParameter("@username", userid);
SqlParameter result = new SqlParameter("@result", res);
result.Direction = ParameterDirection.Output;
cmd.Parameters.Add(username);
cmd.Parameters.Add(result);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
res = int.Parse(result.Value.ToString());
if (res == 1)
adapter.Fill(dt);
else
Error = "چنین کاربری در سیستم ثبت نشده است";
}
catch
{
Error += "خطاي 1101_خطا در خواندن اطلاعات";
}
return dt;
}
}

کدهای درون دکمه:

myclass class1 = new myclass();
class1.connect();
GridView1.DataSource = class1.select(TextBox1.Text.TrimEnd());
GridView1.DataBind();
class1.disconnect();

hamid_shrk
چهارشنبه 21 دی 1390, 18:39 عصر
سلام / کد استور پروسیجرتون رو هم بذارید

veniz2008
چهارشنبه 21 دی 1390, 21:48 عصر
اینم کد پردازه ای که استفاده میکنم(این کد قبلا تست شده و مشکلی نداره):

create proc search_user
@username nvarchar(50),
@result int output
as
if(EXISTS(select * from users where UserName=@username))
begin
set @result=1
select * from users where UserName=@username
end
else
set @result=0
go

mahmood_4246
چهارشنبه 21 دی 1390, 23:20 عصر
بعد از خط 70
SqlDataReader reader = cmd.ExecuteReader();
باید اول دیتا ریدر رو فعال کنید

reader.read();

veniz2008
چهارشنبه 21 دی 1390, 23:41 عصر
بعد از خط 70
SqlDataReader reader = cmd.ExecuteReader();
باید اول دیتا ریدر رو فعال کنید

reader.read();
جواب نداد،مشکل از یه جای دیگه باید باشه،دوستان لطفا راهنمایی کنید.

mahmood_4246
چهارشنبه 21 دی 1390, 23:51 عصر
مهندس فایل پروژت رو بذار

veniz2008
پنج شنبه 22 دی 1390, 00:05 صبح
مهندس فایل پروژت رو بذار
حجم برنامه خیلی زیاده و امکان آپلودش نیست!،من که تمام موارد رو گذاشتم،دوست عزیز لطف میکنی و با توجه به کدهایی که گذاشتم یک نمونه واسم بسازید،من بدون استفاده از کلاس ها هیچ مشکلی در نمایش داده ها ندارم ولی نمیدونم مشکل این برنامه چیه،اگه ممکنه پیغام مناسب هم درون صفحه نمایش داده بشه،تشکر از محبت شما.

aslan
پنج شنبه 22 دی 1390, 12:12 عصر
SqlParameter username = new SqlParameter("@username", userid);

جستجو بر اساس Userid يا Username ???

veniz2008
پنج شنبه 22 دی 1390, 12:48 عصر
SqlParameter username = new SqlParameter("@username", userid);

جستجو بر اساس Userid يا Username ???
جستجو براساس username (فیلد جدولم هستش)،کاربر نام کاربری رو درون textbox وارد میکنه،این نام کاربری بصورت رشته userid به درون کلاس فرستاده میشه و این مقدار در نهایت درون username ریخته میشه،در واقع userid یک واسطه هستش برای ارسال مقدار textbox به کلاس.

aslan
یک شنبه 25 دی 1390, 19:59 عصر
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ClassTest
{
class MyClass
{


public static string Error = "";

SqlConnection con;
SqlCommand cmd;
SqlDataAdapter adapter;
int res;
public MyClass()
{

con = new SqlConnection();
cmd = new SqlCommand();
adapter = new SqlDataAdapter();
cmd.Connection = con;
}
public void connect()
{
string cs = "Data Source=(local);Initial Catalog=Plants;Integrated Security=True";

try
{

con.ConnectionString = cs;
con.Open();

}
catch
{
Error += "خطاي 1100_خطا در اتصال به بانک اطلاعاتي";
}



}
public void disconnect()
{
con.Close();
}
public DataTable select(string userid)
{
DataTable dt = new DataTable();
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "search_user";
cmd.Connection = con;
SqlParameter username = new SqlParameter("@username", userid);
SqlParameter result = new SqlParameter("@result",res);
result.Direction = ParameterDirection.Output;
cmd.Parameters.Add(username);
cmd.Parameters.Add(result);
DataTable t = new DataTable();
adapter.SelectCommand = cmd;
adapter.Fill(dt);
if (dt.Rows.Count==0)
Error = "چنین کاربری در سیستم ثبت نشده است";
}
catch
{
Error += "خطاي 1101_خطا در خواندن اطلاعات";
}
return dt;
}

}
}