PDA

View Full Version : مبتدی: تعریف کلاسی برای برقراری ارتباط با بانک اطلاعاتی



mehrdad85
شنبه 13 اسفند 1390, 00:34 صبح
سلام
دوستان من میخام یه کلاس در پروژه تعریف کنم که داخل اون تنظیمات برقراری ارتباط با بانک در اون انجام میشه
ساخت connection و ست کردن connection string داخل اون متد هایی تعریف کنم واسه select , ...
آیا اصلا این کار منطقیه و دوم اینکه چرا کد زیر جواب نمیده ؟
class Db
{
SqlConnection con=new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=InjectionTest;Integrated Security=True;";
con.Open();
SqlCommand cmd=new SqlCommand();
SqlDataAdapter da=new SqlDataAdapter();
DataTable dt=new DataTable();


string sr="server=. ;database=user.mdf ; trusted_conection=yes";

mrbm_2007
شنبه 13 اسفند 1390, 01:08 صبح
سلام
اگر کد رو توی تگ کد بذارید دوستان بیشتر مشتاق پاسخ گویی خواهند بود
class Db
{
SqlConnection con=new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=InjectionTest;Integrated Security=True;";
con.Open();
SqlCommand cmd=new SqlCommand();
SqlDataAdapter da=new SqlDataAdapter();
DataTable dt=new DataTable();


string sr="server=. ;database=user.mdf ; trusted_conection=yes";

در مورد اینکه منطقی هست یانه:
به نظر من بستگی داره که از این کلاس چه انتظاراتی داشته باشی؛
مثلا اگر قراره یک سری کارهای ساده رو برای یه پروژه ی خاص انجام بده، منطقی هست
ولی اگر کلاسی بخوای که کارهای با جزئیات بیشتر و حالات مختلف رو شامل بشه که برای هر پروژه ای قابل استفاده باشه کار منطقی نیست، چون در اون صورت فکر کنم راحتر باشه مستقیم با کوئیری های sql کار کنی تا اینکه به یه کلاس دیگه بفهمونی دقیقا چی می خوای

mehrdad85
شنبه 13 اسفند 1390, 08:05 صبح
با سلام

از پاسخت ممنون دوست عزیز
من نیاز دارم که یه سری کارهای ساده را با اون انجام بدم که دیگه نیازی نباشه برای ارتباط با بانک همیشه دیتابیس را open کنم connection ست کنم و و کارهای روتینی که شاید انجام اون به صورت پی در پی هم خوانایی برنامه را پایین میبره و هم حوصله برنامه نویس را
ثلا برای متد های select , insert و ... یه سری کارها انجام بدم که نام جدول و فیلد ها را بگیره و insert کنه و یا نام جدول را بگیره و شرط کوئری را و سپس مقدار برگردونه
کسی نمیدونه چرا این کد بالا ارور میده؟
چرا داخل class نمیتونیم data table بسازیم؟
مگه چه مشکلی پیش میاید؟

مرسی

mrbm_2007
شنبه 13 اسفند 1390, 11:35 صبح
چه خطایی میده؟ یکم بیشتر توضیح بده

jeson_park
شنبه 13 اسفند 1390, 13:56 عصر
با سلام
داریدTBLUser با فرض اینکه شما یه جدول با نام

public class DataAccess
{
static string strExceptionMsg = null;

SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;


public DataAccess()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}

public void Connect()
{

con.ConnectionString = "Data Source=.;Initial Catalog=InjectionTest;Integrated Security=True;";
con.Open();

}
public void Disconnect()
{
con.Close();
}
public void DoCommand(string sqlCommand)
{
cmd.CommandText = sqlCommand;
cmd.ExecuteNonQuery();
}
public void InserToDB(string firtname, string lastName, int age)
{
string command = "insert into TBLUser(FirstName,LastName,Age) values(@FName,@LName,@Age)";
cmd.Parameters.AddWithValue("@FName", firtname);
cmd.Parameters.AddWithValue("@LName", lastName);
cmd.Parameters.AddWithValue("@Age", age);

DoCommand(command);
con.Close();
}

}
بر حسب نیاز بقیه قسمت ها رو هم تکمیل کنید
پیوست: شاید مشکل از connection string باشه
من با connection string شما مشکل دارم
خودم همیشه از این connectionstring استفاده می کنم

string ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;User Instance=True";
موفق باشید

mehrdad85
شنبه 13 اسفند 1390, 14:38 عصر
سلام
دوست عزیز از این که وقت گذاشتید و پاسخ دادید ممنونم
اما مشکل از connection string نیست چون من وقتی به صورت عادی و بدون تعریف کلاس از این کد استفاده میکنم هیچ مشکلی پیش نمیاد و همه چیز ردیف ردیفه
اما نمیدونم چرا داخل کلاس نمیتونم data table درست کنم؟
چرا نمیشه داخل کلاس data table درست کرد؟
لازم به ذکره که system.data و system.data.sqlclient را هم using کردم

ممنون میشم راهنمایی بفرمایید
مرسی

jeson_park
شنبه 13 اسفند 1390, 15:00 عصر
خب متن خطا رو بزارید

کلاس تون هم از بیخ مشکل داره من توی VS واردش کردم intellSence هنگ کرده! :لبخند:
به کلاس من نگاه کنید
سازنده داره
تابع داره
شما همین کد ها رو برای یه تابع عضو کلاس نویسید مثلا کلاستون رو به این صورت در بیارید
error CS1519: Invalid token '=' in class, struct, or interface member declaration
ببنید هر کلاسی از یه سری توابع عضو تشکیل شده که این توابع عضو کار کلاس رو انجام میدن
شما می خوای یه دستور انتصاب توی کلاس انجام بدی نمیشه
این رو باید با یه تابع عضور انجام بدی



public class DB
{
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();



public void connect()
{
con.ConnectionString = "Data Source=.;Initial Catalog=InjectionTest;Integrated Security=True;";
con.Open();
}
string sr = "server=. ;database=user.mdf ; trusted_conection=yes";
}