Visual Sutaudio2017を使ってADO.NETによるデータベース(SQLServer)プログラミングでWindowsFormを作っています。
CREATE TABLE [dbo].[IMAGE] ( [ImageID] INT IDENTITY (1, 1) NOT NULL, [Photoname] NVARCHAR (50) NULL, [Genre] INT NULL, CONSTRAINT [NUM2] PRIMARY KEY CLUSTERED ([ImageID] ASC), CONSTRAINT [NUM3] FOREIGN KEY ([Genre]) REFERENCES [dbo].[GENRE] ([GenreID]) ); CREATE TABLE [dbo].[GENRE] ( [GenreID] INT IDENTITY (1, 1) NOT NULL, [Genre] NVARCHAR (50) NULL, CONSTRAINT [NUM1] PRIMARY KEY CLUSTERED ([GenreID] ASC) );
というテーブルを作りました。
IMAGEテーブルのPhotonameとGENREテーブルのGrnreにINSERTした後GenreにGENREテーブルのGenreIDをSELECTで取得したのをINSERTしたく
private void button2_Click(object sender, EventArgs e) { cn.ConnectionString= @"・・・"; cn.Open(); cmd.Connection = cn; cmd.CommandType = CommandType.Text; cmd.CommandText = "INSERT INTO [dbo].[IMAGE] (Photoname) VALUES("+ "N'" + textBox3.Text + "')" + //PhotonameをIMAGEテーブルに格納 "INSERT INTO [dbo].[GENRE] (Genre) VALUES (" + "N'" + textBox1.Text + "')" + //GenreをGENREテーブルに格納 "INSERT INTO[dbo].[IMAGE](Genre) " + "SELECT GenreID FROM[dbo].[GENRE] " + "WHERE Genre Like N'%" + textBox1.Text + "%'";//GenreIDをIMAGEテーブルに格納 rd = cmd.ExecuteReader(); rd.Close(); cn.Close(); }
とし
private SqlConnection cn = new SqlConnection(); private SqlCommand cmd = new SqlCommand(); private SqlDataReader rd; private string cnstr = @"・・・"; private void button4_Click(object sender, EventArgs e) { cn.ConnectionString = cnstr; cn.Open(); cmd.Connection = cn; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM [dbo].[IMAGE] "; rd = cmd.ExecuteReader(); while (rd.Read()) listBox1.Items.Add( String.Format("[ImageID]{0}[Photoname]{1,-10}[Genre]{2,-10}", rd["ImageID"],rd["Photoname"], rd["Genre"])); rd.Close(); cn.Close(); }
で表示させました。
すると
[IMAGE]テーブル
[ImageID]1[Photoname]a[Genre]
[ImageID]2[Photoname] [Genre]1
[GENRE]テーブル
[GenreID]1[Genre]q
と表示させることはできました。
しかし
[IMAGE]テーブル
[ImageID]1[Photoname]a[Genre]1
としたく
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1160890346を参考に
private void button2_Click(object sender, EventArgs e) { cn.ConnectionString= @"・・・"; cn.Open(); cmd.Connection = cn; cmd.CommandType = CommandType.Text; cmd.CommandText = "INSERT INTO [dbo].[IMAGE] (Photoname,Genre) VALUES(" + "N'" + textBox3.Text + "',"+ "(SELECT GenreID FROM[dbo].[GENRE] " + "WHERE Genre Like N'%" + textBox1.Text + "%'))" + //PhotonameとGENREIDをIMAGEテーブルに格納 "INSERT INTO [dbo].[GENRE] (Genre) VALUES (" + "N'" + textBox1.Text + "')" ; //GenreをGENREテーブルに格納 rd = cmd.ExecuteReader(); rd.Close(); cn.Close(); }
としました。
しかし
[IMAGE]テーブル
[ImageID]1[Photoname]a[Genre]
としか表示されません。
なので
"INSERT INTO [dbo].[IMAGE] (Photoname) VALUES("+ "N'" + textBox3.Text + "')"+ "INSERT INTO[dbo].[IMAGE](Genre) " + "SELECT GenreID FROM[dbo].[GENRE] " + "WHERE Genre Like N'%" + textBox1.Text + "%'";
を1つのSELECT文にする方法を教えてください。
制作物
Windows Form
検索
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1160890346を参考
開発環境
Visual Sutaudio2017,.NET Framework4.7,SQL Server Express2017,Windows10
回答1件
あなたの回答
tips
プレビュー