• ベストアンサー

VB2005からSQLSever2005へ接続、値のセットについて

VB2005、SQLSever2005ともに初心者です。みなさんの知恵をお借りしたく質問いたします。以下の状況で困っています。 1.VB2005からSQLSever2005へ接続する為にはコードをどのように記述すればよろしいでしょうか。 2.「AAA」というテーブルに「BBB」というテーブルから「AAA」の「A_No」という項目に「BBB」の「B_No」という項目の値をセットするにはどのような記述が必要でしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんばんわ 遅くなりました。。。(^^; >実は「AAA」「BBB」ともに複数のフィールドがありまして 複数ある場合で、全て取得したい場合は、 cmd.CommandText = "SELECT A_No FROM AAA"; のSQLを「SELECT * FROM AAA」で取得することが出来ます。 INSERT方法ですが、 >while (dr.Read()) >{ >// INSERT文 >cmd.CommandText = ""; >// INSERT実行 >cmd.ExecuteNonQuery(); >} この箇所を次のような感じで修正するとよいのではないかと思います。 // dr.Read()は取得したデータを1行ずつ読み込む // 全て読み込むとループから抜ける while (dr.Read()) { // 読み込んだ行のデータは、今回でいうとdrに配列で格納されている // 値を取り出すには dr[0] やdr["A_No"]のようにフィールドを // 指定する // INSERT文 cmd.CommandText = "INSERT INTO BBB (B_No) VALUES (" + dr[0].ToString() + ")"; // INSERT実行 cmd.ExecuteNonQuery(); } このように記述すると、取得したデータの行数だけINSERTできるはずです(^^;

lets711
質問者

お礼

わかりやすい説明でありがとうございます。 内容は理解できました。がんばってコーディングしてみます!

その他の回答 (1)

回答No.1

using System.Data.SqlClient; private static void SqlTest() { // ServerName はローカルにDBが存在するなら localhost などをセット // Initial Catalog DB名 // Integrated Security 場合によって変ります // 調べてみてください string conStr = "Data Source = ServerName;" + Initial Catalog = Northwind;" + "Integrated Security = SSPI;"; SqlCommand cmd; SqlDataReader dr; SqlConnection con = new SqlConnection(conStr ); // データベース接続を開く con.Open(); cmd = con.CreateCommand(); // SQLをセット cmd.CommandText = "SELECT A_No FROM AAA"; // SQLを実行し、結果を取得する dr = cmd.ExecuteReader(); // SELECTしたデータをもとにBBBへINSERTする while (dr.Read()) { // INSERT文 cmd.CommandText = ""; // INSERT実行 hCommand.ExecuteNonQuery(); } cmd.Dispose(); con.Close(); con.Dispose(); } すみません、時間が無いので確認していませんが、 参考になれば幸いです。

lets711
質問者

補足

早速のご回答ありがとうございます。SQLSever2005へ接続するコードは理解できました。 項目のセットについてですが、実は「AAA」「BBB」ともに複数のフィールドがありまして「AAA」のテーブルから一つ一つSelect文でフィールドを選択して「BBB」のテーブルで該当するフィールドにINSERT文でセットする感じなるのでしょうか。 よろしくお願いいたします。

関連するQ&A