PDA

View Full Version : سوال: مشکل در Read کردن اطلاعات دیتابیس sql در ویژوال استودیو



booysusa
پنج شنبه 09 خرداد 1398, 13:04 عصر
با درود
دوستان من اطلاعات جداولم رو میخوام در دیتاگرید ویو نمایش بدم، به مشکل بر خوردم، تیکه کد نمایش اطلاعات از یک جدول رو میدونم ولی برای نمایش اطلاعات دو جدول در گرید ویوو رو نمی دونم

من دو جدول دارم:
یکی جدول Contact که شامل نام - نام خانوادگی - جنسیت - شماره ملی و تاریخ تولد هست
و جدول دومم، KartMeli که شامل فیلدهای سریال کارت ملی و نوع کارت ملی (جدید یا قدیمی) می باشد
بحث ارتباط بین جداول رو هم درست کردم و مشکلی ندارم از این بابت


لطفا راهنمایی کنید بد گیرشم

این عکس که گذاشتم، با این کدی که نوشتم فقط میتونم اطلاعات یک جدول رو در گرید ویوو مشاهده کنم
http://s9.picofile.com/file/8362081726/09.JPG


اینم تصویری از دیتابیس و هر دو جدول من هست
http://s9.picofile.com/file/8362083300/20.png





کد من

public List<Contact> Read() // جدول کارت ملی رو اضافه کنم
{
string command = "Select * from Contact";
// با خط کد پائین، اطلاعات از جدول کارت ملی فراخوانی میکنم
// مشکل اینجاست که من نمی توانم اطلاعات رو از هر دو جدول کانتکت و کارت ملی فراخوانی کنم
//string command2 = "Select * from KartMeli";

var db = new DataAccess.DatabaseManager();
var result = db.GetData(command);

////var groupTypeList = new GroupType().Read();

List<Contact> lstResult = new List<Contact>();
foreach (DataRow r in result.Rows)
{
Contact contact = new Contact();
// اطلاعات شناسنامه
contact.ID = Convert.ToInt64(r["ID"]);
contact.Name = r["Name"].ToString();
contact.NameKhanevadegi = r["NameKhanevadegi"].ToString();
contact.Jensiat = Convert.ToBoolean(r["Jensiat"]); // اینجا جنسیت رادیو باتن مشخص میکند
contact.ShomarehMeli = r["ShomarehMeli"].ToString();
contact.TarikhTavalod = Convert.ToDateTime(r["TarikhTavalod"]);
// اطلاعات کارت ملی
//contact.idk = Convert.ToInt64(r["idk"]);
//contact.SerialKartMeli_KartMeli = r["SerialKartMeli_KartMeli"].ToString();
//contact.NoeKartMeli = (bool)r["NoeKartMeli"];
lstResult.Add(contact);
}
return lstResult;
}



مشخصات برنامه من
برنامه سه لایه: لایه اول Busines - لایه دوم UI - لایه سوم DataBase
ویژوال استودیو 2017
سی شارپ
اس کیو ال 2017

mmbguide
پنج شنبه 09 خرداد 1398, 14:57 عصر
سلام

بهترین کار استفاده از دستورات SQL و Join کردن جداول مرتبط باهم است. انواع Join کردن رو در اینترنت و یا همین سایت جستجو کنید حتما نتیجه میگیرید

booysusa
پنج شنبه 09 خرداد 1398, 17:22 عصر
والله گشتم ، توضیحات دوستان خوب بود ولی من متوجه نمی شدم
امکانش هست لطف کنید و دیتابیس من را طراحی کنید یا وقت بزارید آموزش مختصری بدید
خیلی معطل این مورد شدم و کلی هم جستجو بی نتیجه داشتم
هزینه آموزش پرداخت می شود

asiatec
پنج شنبه 09 خرداد 1398, 17:23 عصر
میخوای دو تا جدول و تو یه گرید ویو نشون بدی؟

mmbguide
پنج شنبه 09 خرداد 1398, 20:45 عصر
ی مثال ساده از Join کردن دو جدول

SELECT dbo.tblContact.*,
dbo.tblKartMeli.*


FROM dbo.tblContact
LEFT JOIN dbo.tblKartMeli ON dbo.tblKartMeli.Contact_ID = ID


WHERE dbo.tblContact.ID = 1



150272

150273

خروجی دستور بالا. البته بجای * میتونید نام فیلدهای مورد نظر خودتون رو بنویسید تا ستون های اضافه نمایش داده نشوند
150274

booysusa
پنج شنبه 09 خرداد 1398, 21:14 عصر
سپاسگزارم
قطعه کد خواندن در برنامه ویژوال استودیو رو چی باید بنویسم؟

من این کد رو مینوشتم قبلا، برای یک جدول کاربرد داشت ولی الان که میخوام برای بیش از یک جدول بخوانم، کاربرد ندارد


public List<Contact> Read() // الان فقط میتونم اطلاعات جدول کانتکت را اضافه در گرید ویوو ببینم
{
string command = "Select * from Contact";
// با خط کد پائین، اطلاعات از جدول کارت ملی فراخوانی میکنم
// مشکل اینجاست که من نمی توانم اطلاعات رو از هر دو جدول کانتکت و کارت ملی فراخوانی کنم
//string command2 = "Select * from KartMeli";

var db = new DataAccess.DatabaseManager();
var result = db.GetData(command);

////var groupTypeList = new GroupType().Read();

List<Contact> lstResult = new List<Contact>();
foreach (DataRow r in result.Rows)
{
Contact contact = new Contact();
// اطلاعات شناسنامه
contact.ID = Convert.ToInt64(r["ID"]);
contact.Name = r["Name"].ToString();
contact.NameKhanevadegi = r["NameKhanevadegi"].ToString();
contact.Jensiat = Convert.ToBoolean(r["Jensiat"]); // اینجا جنسیت رادیو باتن مشخص میکند
contact.ShomarehMeli = r["ShomarehMeli"].ToString();
contact.TarikhTavalod = Convert.ToDateTime(r["TarikhTavalod"]);
// اطلاعات کارت ملی
//contact.idk = Convert.ToInt64(r["idk"]);
//contact.SerialKartMeli_KartMeli = r["SerialKartMeli_KartMeli"].ToString();
//contact.NoeKartMeli = (bool)r["NoeKartMeli"];
lstResult.Add(contact);
}
return lstResult;
}

saeidfar
یک شنبه 19 خرداد 1398, 17:59 عصر
شما خیلی راحت توی sql یه ویو از دوتا جدولت بساز توی c# اون رو فراخوانی کن.
چه کاریه آخه ؟!

davidrobert
چهارشنبه 22 خرداد 1398, 19:18 عصر
این هم برای ارتباط چندین جدول با هم هستش.
SELECT DISTINCT
TOP (100) PERCENT Tbl_Sabt_Motovafy.SM_ID, Tbl_Sabt_Motovafy.SM_SHS_ShomareSanad, Tbl_Sabt_Motovafy.SM_Shomare_Pavande, Tbl_Sabt_Motovafy.SM_CM_Code_Mali, Tbl_Sabt_Motovafy.SM_Meleyat,
CASE WHEN Tbl_Sabt_Motovafy.SM_Meleyat = 1 THEN N'ایرانی' ELSE N'غیر ایرانی' END AS egleyat, Tbl_category_sex.CTS_Sex, Tbl_Sabt_Motovafy.SM_NameAndLast, Tbl_Sabt_Motovafy.SM_Father,
(SELECT dbo.MakeCompleteShmsiDate(Tbl_Sabt_Motovafy.SM_Bor n, '/') AS Expr1) AS SM_Born,
(SELECT dbo.MakeCompleteShmsiDate(Tbl_Sabt_Motovafy.SM_Dea th, '/') AS Expr1) AS SM_Death, Tbl_Sabt_Motovafy.SM_Faz, Tbl_NameGete.NG_NameGete, Tbl_Sabt_Motovafy.SM_Gete, Tbl_Sabt_Motovafy.SM_Radif,
Tbl_Sabt_Motovafy.SM_Shomare, Tbl_Sabt_Motovafy.SM_Tabage, Tbl_Sabt_Motovafy.SM_AgeYear, Tbl_Bolog.B_Bolog AS SM_ID_Bolog, Tbl_Sabt_Motovafy.SM_Mahal_Dafn, Tbl_Users.U_U_Username,
(SELECT dbo.MakeCompleteShmsiDate(Tbl_Sabt_Motovafy.SM_Ins ert_Date, '/') AS Expr1) AS SM_Insert_Date,
(SELECT dbo.MakeCompleteShmsiDate(Tbl_Sabt_Motovafy.SM_Upd ate_Date, '/') AS Expr1) AS SM_Update_Date, Tbl_Sabt_Motovafy.SM_IP
FROM Tbl_Sabt_Motovafy INNER JOIN
Tbl_category_sex ON Tbl_Sabt_Motovafy.SM_Sex = Tbl_category_sex.CTS_ID INNER JOIN
Tbl_NameGete ON Tbl_Sabt_Motovafy.SM_Name_Gete = Tbl_NameGete.NG_ID INNER JOIN
Tbl_Users ON Tbl_Sabt_Motovafy.SM_U_Username = Tbl_Users.U_ID INNER JOIN
Tbl_Bolog ON Tbl_Sabt_Motovafy.SM_ID_Bolog = Tbl_Bolog.B_ID_Bolog
WHERE (Tbl_Sabt_Motovafy.SM_NameAndLast LIKE N'%' + @SM_NameAndLast + '%')
ORDER BY Tbl_Sabt_Motovafy.SM_NameAndLast, Tbl_Sabt_Motovafy.SM_ID DESC