ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3712102 VB2005からSQLSever2005へ接続、値のセットについて
質問者:lets711 VB2005、SQLSever2005ともに初心者です。みなさんの知恵をお借りしたく質問いたします。以下の状況で困っています。
1.VB2005からSQLSever2005へ接続する為にはコードをどのように記述すればよろしいでしょうか。

2.「AAA」というテーブルに「BBB」というテーブルから「AAA」の「A_No」という項目に「BBB」の「B_No」という項目の値をセットするにはどのような記述が必要でしょうか。

よろしくお願いいたします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/01/25 13:20
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.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できるはずです(^^;
回答者:totoro1999
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/01/25 21:55
この回答へのお礼わかりやすい説明でありがとうございます。
内容は理解できました。がんばってコーディングしてみます!

回答

ANo.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();
}

すみません、時間が無いので確認していませんが、
参考になれば幸いです。
回答者:totoro1999
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/01/25 14:06
この回答への補足早速のご回答ありがとうございます。SQLSever2005へ接続するコードは理解できました。
項目のセットについてですが、実は「AAA」「BBB」ともに複数のフィールドがありまして「AAA」のテーブルから一つ一つSelect文でフィールドを選択して「BBB」のテーブルで該当するフィールドにINSERT文でセットする感じなるのでしょうか。
よろしくお願いいたします。
この回答へのお礼この回答にお礼をつける(質問者のみ)