0

メインテーブルとサンテーブルから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();

エラーが見つかりません

4

2 に答える 2

2

1 つの問題は、文字列の連結にスペースが含まれていないことです。

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

結果として"dbo.Booking.PartnerIDFROM dbo.Booking INNER JOIN"

FROM の前にスペースがないことに注意してください。以下では、.PartnerID の D の後にスペースを入れます。例で「+」を使用して 2 つの文字列を結合する場合は常に、これを行う必要があります。

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

このような状況では、通常、SQL 文字列変数の値を出力してクエリ ウィンドウに貼り付けるのが理想的です。SQL を実行したら、変更をコードに戻すことができます。そして間違いなく、SQL パラメータが最適です。

于 2012-09-21T20:28:08.910 に答える
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+ "'";
于 2016-09-26T20:06:45.930 に答える