从多个表中填充DataGridView

时间:2012-09-21 19:04:34

标签: sql-server datagridview

我想从Main表和suntables填充datagridview ![在此输入图像说明] [1]

我的代码:

SqlConnection conn = new SqlConnection(@"Data Source=SHARKAWY;Initial Catalog=Booking;Persist Security Info=True;User ID=sa;Password=123456");
conn.Open();

txtDate.Text = DateTime.Now.ToShortDateString();

DataSet Booking_ds = new DataSet();
DataSet Trip_ds = new DataSet();
DataSet Fleet_ds = new DataSet();
DataSet Partner_ds = new DataSet();
DataSet Guide_ds = new DataSet();

SqlDataAdapter Booking_da;

string Bookingsql = "SELECT dbo.Booking.BookingID, dbo.TripTypes.TripName, dbo.Partners.PartnerName, dbo.Booking.DelegateName, dbo.Fleets.FleetName, dbo.Guides.GuideName, dbo.Booking.AdultNum, dbo.Booking.AdultPrice, dbo.Booking.BookingDate, dbo.Booking.ChildNum, dbo.Booking.ChildPrice, dbo.UserInfo.UserName, dbo.Booking.TripID, dbo.Booking.PartnerID"
                  +"FROM  dbo.Booking INNER JOIN"
                  +"dbo.Partners ON dbo.Booking.PartnerID = dbo.Partners.PartnerID INNER JOIN"
                  +"dbo.TripTypes ON dbo.Booking.TripID = dbo.TripTypes.TripID INNER JOIN"
                  +"dbo.Fleets ON dbo.Booking.FleetID = dbo.Fleets.FleetID INNER JOIN"
                  + "dbo.Guides ON dbo.Booking.GuideName = dbo.Guides.GuideID INNER JOIN"
                  +"dbo.UserInfo ON dbo.Booking.UserName = dbo.UserInfo.UserID BookingDate = '"+txtDate.Text+"'";

Booking_da = new SqlDataAdapter(Bookingsql, conn);
Booking_da.Fill(Booking_ds, "Booking");

DGViewBooking.DataSource = Booking_ds.Tables["Booking"];

conn.Close();

我找不到错误

2 个答案:

答案 0 :(得分:2)

一个问题是,在字符串连接中,您不包含空格。

dbo.Booking.PartnerID"                   +"FROM  dbo.Booking INNER JOIN" 

会产生"dbo.Booking.PartnerIDFROM dbo.Booking INNER JOIN"

请注意,FROM之前没有空格。在下面我在.PartnerID中的D之后放了一个空格。无论您在示例中使用“+”连接两个字符串,都需要执行此操作。

dbo.Booking.PartnerID "                   +"FROM  dbo.Booking INNER JOIN"

在这些情况下,输出sql字符串变量的值并将其粘贴到查询窗口中通常是一个很好的理想选择。一旦运行了SQL,就可以将更改传回给代码。当然,SQL参数是可行的方法。

答案 1 :(得分:0)

除了@ PatFromCanada的答案之外,您还忘记了WHERE个关键字。 考虑使用别名,它将使您的代码更短,更容易调试。

string Bookingsql = "SELECT b.BookingID, t.TripName, p.PartnerName, b.DelegateName, 
f.FleetName, g.GuideName, b.AdultNum, b.AdultPrice, b.BookingDate, 
    b.ChildNum, b.ChildPrice, u.UserName, b.TripID, b.PartnerID"
                      + " FROM  Booking b INNER JOIN"
                      + " Partners p ON b.PartnerID = p.PartnerID INNER JOIN"
                      + " TripTypes t ON b.TripID = t.TripID INNER JOIN"
                      + " Fleets f ON b.FleetID = f.FleetID INNER JOIN"
                      + " Guides g ON b.GuideName = g.GuideID INNER JOIN"
                      + " UserInfo u ON b.UserName = u.UserID 
                      + " WHERE BookingDate = '" + txtDate.TEXT+ "'";