- - PR -
【C#・MSSQL】COUNTの結果をINSERTしたい
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-22 11:33
お世話になります。
SQLで日付が一致するデータの数を数えて、その数をテーブルに格納したいと考えています。 そこで、次のような文章を書きました。 -------------------------------------- string testCmd ="SELECT count(*) FROM 情報 where 日付=txtDateDT"; sqlCommandDB.Parameters.AddWithValue("@DataID", testCmd); sqlCommandDB.Parameters.AddWithValue("@DataDate", txtDateDT.ToString()); sqlCommandDB.CommandText = "INSERT INTO 情報 VALUE (@DataDate,@DataID)"; sqlReaderDB = sqlCommandDB.ExecuteReader(); -------------------------------------- ですが、最後のExecuteReaderの箇所で、 「VALUEの近くに無効な構文があります。」 といったメッセージが表示されてしまいます。 カウントした数をテーブルに格納するためには、 どうすれば良いのでしょうか? ご回答よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-09-22 11:37
C#はわからないですが、 sqlCommandDB.ExecuteNonQueryで実行されるといいと思います
| ||||||||
|
投稿日時: 2006-09-22 11:55
さっそくのご回答ありがとうございます。
ご指摘の通り変更してみましたが、 「型 'int' を型 'System.Data.SqlClient.SqlDataReader' に暗黙的に変換できません。」 と表示されて中断してしまいました……。 | ||||||||
|
投稿日時: 2006-09-22 12:10
sqlReaderDB = sqlCommandDB.ExecuteNonQuery
とされてませんか? データリーダーは返さないようにされればいいんじゃないかとおもいます。 sqlCommandDB.Parameters.AddWithValue("@DataID", testCmd); sqlCommandDB.Parameters.AddWithValue("@DataDate", txtDateDT.ToString()); sqlCommandDB.CommandText = "INSERT INTO 情報 VALUE (@DataDate,@DataID)"; sqlCommandDB.ExecuteNonQuery(); | ||||||||
|
投稿日時: 2006-09-22 12:13
そもそも
SELECT COUNT(*)とINSERT文は分けて発行してるのでしょうか? | ||||||||
|
投稿日時: 2006-09-22 12:15
全く気づかなかった_| ̄|○ | ||||||||
|
投稿日時: 2006-09-22 12:20
ごめんなさい、burton999 さんに物言いしているように見えてしまったので、削除してしまいました。
C# や .NET Framework どうこう以前に SQL の構文エラーです。 正しくは、'VALUES' でしょう。 それと、最初の testCmd が用意されている意味がよくわかりません。 SELECT コマンドを組み立てた後に、INSERT コマンド...? (;~_~) あ、同時にやろうとしているんでしょうか...? @DataID パラメータに COUNT の結果を入れたいということですか... [ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-09-22 12:24 ] | ||||||||
|
投稿日時: 2006-09-22 12:25
そんなことないですよ。 私なんぞに気遣いは無用ですぜ(・∀・) 本題ですが、 INSERT文のVALUESにSELECT COUNT(*) の結果を直で挿入しようとしてるっぽですけど、そんなことはできないのでは? まずCOUNT(*)を取得して、その後、INSERTってのが普通かと。 |
1|2|3|4
次のページへ»