は、私が一緒に以下の2つのテーブルを接続しようとしている:接続する2つのSQL Serverのテーブル
CREATE TABLE [dbo].[Groups]
(
[Group_Id] INT IDENTITY (1, 1) NOT NULL,
[Group_Name] NVARCHAR (50) NULL,
[Group_Desc] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Group_Id] ASC)
);
CREATE TABLE [dbo].[Events]
(
[Event_Id] INT IDENTITY (1, 1) NOT NULL,
[Event_Group_Id] INT null,
[Event_Type] NVARCHAR (50) NULL,
[Event_Title] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Event_Id] ASC),
CONSTRAINT fk_event_group
FOREIGN KEY (Event_Group_Id) REFERENCES Groups (Group_Id)
);
最初の質問:私は正しく、テーブルを作成していますか?
Events
に次のコードを追加できましたが、のGroups
のPKをFKとして正常に接続することができませんでした。
誰にも提案はありますか?
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BallinoraDBConnectionString1"].ConnectionString);
conn.Open();
string findGroupOfEvent = "SELECT Group_Id FROM Groups WHERE Group_Name ='" + DropDownListEventGroup.SelectedItem.ToString() + "'";
int groupId = Convert.ToInt32(findGroupOfEvent);
string insertQuery = "INSERT INTO Events (Event_Group_Id, Event_Type, Event_Title) VALUES (@GroupEventID, @Type, @Title)";
SqlCommand com = new SqlCommand(insertQuery, conn);
com.Parameters.AddWithValue("@GroupEventID", groupId);
com.Parameters.AddWithValue("@Type", DropDownListEventType.SelectedItem.ToString());
com.Parameters.AddWithValue("@Title", TextBoxET.Text);
com.ExecuteNonQuery();
Response.Redirect("ViewEvents.aspx");
Response.Write("Registration is successful");
conn.Close();
'しかし、私はイベントのFKとしてグループのPKに正常に接続できませんでした。<=あなたはこれをどういう意味ですか?また、SqlConnectionsを 'using'ブロックにラップし、DBと対話するたびに新しいインスタンスを作成する必要があります(再利用する中心的なSqlConnectionはありません)。 [ベストプラクティス - SQL文の実行](http://stackoverflow.com/documentation/.net/3589/ado-net/14261/best-practices-executing-sql-statements)も参照してください。 – Igor
イベントテーブルに新しい行を追加すると、[グループ]の[グループ名]にある同じテキストを含むドロップダウンメニューが表示されます。ドロップダウンメニューで選択した[Group_Name]と同じ行のGroup_IDを取得し、その値を[Events]テーブルの[Event_Group_ID]に割り当てる必要があります。 – user2911539
あなたは何もUIの言及をしていない、これまでのところこの質問はSql DDLとADO.NETを示しています。そのパートコードは、あなたの意図であるかもしれないし、そうでないかもしれないあなたの '@GroupEventID'パラメタに' 1'をハードコーディングしているというメモをつけて私にはうまく見えます。値を落とすのに役立つ場合は、関連するコードを表示する必要があります。 – Igor