• ベストアンサー

Insert文 で 変数を使いたい

いつもお世話になっております。 現在、VB2005でSQLのプログラムを書いているのですが。 下記のInsert分に関してなのですが・・・ sCom = New SqlClient.SqlCommand(_ & "insert into janDB"(区分,コマンド種別,No) " _ & "values('A01','send',100)", scn) としたらうまくいくのですが、 valuesの実データを変数にしたいのですが, そういった処理はできないでしょうか? 何分初心者の上、試行錯誤しているのですがうまくいきません。 アドバイス等を頂けたら幸いです。 SQL Server 2005 Express Edition Visual Studio 2005 Standard Edition Windows XP Pro SP2

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

sCom = New SqlClient.SqlCommand(_ & "insert into janDB"(区分,コマンド種別,No) " _ & "values('A01','send',100)", scn) を sCom = New SqlClient.SqlCommand(_ & "insert into janDB"(区分,コマンド種別,No) " _ & "values('" & <A01の変数> & "','" & <sendの変数> & "'," <100の変数> & ")", scn) にすれば? 試験環境なくて試験できてませんが。 sComを組み立てたあとで、直接記述したものと同じ文字列を作成できればOKのはず。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

http://www.atmarkit.co.jp/fdotnet/basics/adonet03/adonet03_02.html の「paramins.cs」が参考になるのでは。

関連するQ&A

  • 副問い合わせのinsert文

    いつもお世話になっています。 insert文の副問い合わせのことでお聞きしたいのですが、 ■通常のinsert文 insert into AAA values(aaa,bbb,ccc); 上記のsqlを副問い合わせにした場合(aaaに別テーブルからの検索結果を入れたい場合)どういうSQL文になるでしょうか。 参考書等を参照すると、副問い合わせの場合はvaluesを省略する(使えない?)と記述がありました。 insert into AAA values ( aaa IN (SELECT bbb from BBB where ccc = ddd),bbb,ccc); とはできないみたいですので… どうかご教授宜しくお願いします。

  • INSERT文の書式

    oracleに触るの初めてなのにストアドなんて書くことに・・ 助けを頂けたらと思います。 ストアドの中でですが・・・・ INSERT文の中ではテーブルの項目が2つ以上あるとき、 変数にその2つ以上分の値を文字列として入れておいて 、その値をINSERT文に流すことってできないのでしょう か? test_str := (' ''テスト1'' , ''テスト2'' '); insert into TestTable (test1 , test2 ) values (test_str); 上記のように書くと PL/SQL: ORA-00947: 値の個数が不足しています。 とのエラーが帰ってきます。 上記のように変数を使って下記のように解釈させたいのですが無理なのでしょうか? insert into TestTable (test1 , test2 ) values ('テスト1','テスト2'); それではお願いします。 失礼いたします。

  • PHP/MySQL INSERT文について。

    PHP/MySQL INSERT文について。 こんばんは。 PHP・MySQLでデータベースへデータの書き込みを試行錯誤しております。 そこで一つどうしても解決出来ない問題(謎)があるので質問させて頂きます。 簡易的な質問内容としては 全てのカラムに対する値の挿入は可能なのに カラムを指定して値を挿入しようとしたらエラーが出ます。 データベースの設定はテーブル名【TESTtable】 フィールド 種別 NULL 属性/その他 AAA int(6) No UNSIGNED ZEROFILL / auto_increment BBB int(4) Yes CCC int(4) Yes DDD int(4) Yes PHPでのSQL実行文をしてはの記述としては(値は全て可変で数値を代入します。) INSERT INTO TESTtable VALUES (last_insert_id(),50,600,50) とした場合は問題無くテーブルに書き込みされますが カラムを指定して INSERT INTO TESTtable (AAA,BBB,CCC,DDD) VALUES (last_insert_id(),50,600,50) とした場合、書き込みが行われません。 INSERT INTO TESTtable ('AAA','BBB','CCC','DDD') VALUES (last_insert_id(),50,600,50) INSERT INTO TESTtable (AAA,'BBB','CCC','DDD') VALUES (last_insert_id(),50,600,50) INSERT INTO TESTtable ('AAA','BBB','CCC','DDD') VALUES (last_insert_id(),'50','600','50') 等、色々試してみましたが不可能でした。 カラムAAAはauto_incrementにりますので毎回書き込みされますが BBB、CCC、DDDは書き込みが不要の場合もあるので カラム指定の書き込みは必須となるのですが・・・行き詰ってしまいました・・・。 ご教授頂ければ幸いです。 どうぞ、宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • INSERT文(2)について

    お願い致します。 ORACLE9iを使用しています。 INSERT INTO tableA(AA,BB,CC,DD,・・・) VALUES (AA,BB,CC,DD・・・) ************************** 項目  長さ AA 11,3 BB 11,3 CC 11,3 ・ ・ ************************** 現在データ(VALUES句内部) AA→0.00000000まで ・ ・ *************************** 状態です。 SQL文上のINTO句とVALUES句の値の対応は取れています。 VALUES句が現在は少数点以下切捨てしてない状態な為、ORACLE項目の長さ以上に値が指定されているのですが、これが原因でエラーになっているのでしょうか? エラーメッセージ:「VALUESキーワードがありません」 お願い致します。

  • SQLのINSERT文について

    SQLのINSERT文について Accessを使用していて1列目が管理Noとなっています。 その時のレコード数を管理Noに指定したいのですがうまく行きません。 Insert Into TableA Values((Select Count(*) From TableA),'データ') 原因もしくは他の方法があればご教授お願いします。

  • 一括でINSERTする方法(PL/SQL)

    PL/SQLを利用して、下記3つのSQLを一括でinsertしたいと思います。 (値は、任意でありません。) PL/SQLに関して、初心者なので、どのように記述してよいか 分かりません。 サンプル的なソースを用いて解説して頂けるとありがたいです。 (1)INSERT INTO tb1(列1, 列2) VALUES('値1','値2') (2)INSERT INTO tb1(列1, 列2) VALUES('値3','値4') (3)INSERT INTO tb1(列1, 列2) VALUES('値5','値6')

  • INSERT INTOに関しまして。

    $sql = "INSERT INTO テーブル名(name,day,kg)VALUES('','$day','-1')"; 現在このようなSQL文でINSERTしていますが、データベース内にあるカラムname全てに対してINSERTするにはどうすれば良いでしょうか??現在のSQL文ではそれができず、nameが空欄の状態で更新されてしまいます。

    • ベストアンサー
    • PHP
  • OracleでINSERT文のループ

    INSERT文で何万件ものデータをテーブルに挿入したいのですが、 SUBSTRBまたはSUBSTR関数で何バイト分あるいは何文字分抽出して その部分の値をインクリメントさせる記述のしかたがわかりません。 INSERT INTO aaa (ID,YEAR,CLS,NO,THING,CD,LAND,USER,GROUP) VALUES ('30000003000','2000','2','85000','001','55555','10','test','1'); INSERT INTO aaa (ID,YEAR,CLS,NO,THING,CD,LAND,USER,GROUP) VALUES ('30000003001','2000','2','85001','001','55555','10','test','1'); INSERT INTO aaa (ID,YEAR,CLS,NO,THING,CD,LAND,USER,GROUP) VALUES ('30000003002','2000','2','85002','001','55555','10','test','1'); INSERT INTO aaa (ID,YEAR,CLS,NO,THING,CD,LAND,USER,GROUP) VALUES ('30000003003','2000','2','85003','001','55555','10','test','1'); ・ ・ ・ と、いう感じで、IDとNOのみ、値をインクリメントさせて大量のデータを 挿入したいのですが、SUBSTRB関数やループなどを使って効率的に行うやり方がわかりません。どなたか、ご教授ください。

  • VB2005で、Delete文(SQL Server2005 Express)

    VB2005で、Delete文を使ったプログラムを書きたいのですが。 SQL Server2005 ExpressEditonを使っています。 テーブル(WK_BoxList)から 列名(ComputerName)=XXXに該当するレコードを削除する。 そこで下記のコードを書いたのですが、 1,2のSQL文だと問題ようなのですが。 3の時に、列名'SYSTEM'が無効です。とメッセージがでてしまいます。 テーブル(WK_BoxList)には列名'SYSTEM'というのはありません。 3のようにSQL文は、文字連結させて使えたはずだと思ったのですが。 ちなみにプログラム初心者です。アドバイスをいただきたいのですが、 よろしくお願い致します。<(_ _)> Dim scn As SqlClient.SqlConnection = New SqlClient.SqlConnection(接続文字列) Dim scm As SqlClient.SqlCommand Dim sql As String Dim PcName As String = My.Computer.Name Try scn.Open() ' OK 'sql = "delete from WK_BoxList ' OK '------------1 ' OK 'sql = "delete from WK_BoxList Where ComputerName=1 '-------------- 2 ' NG sql = "delete from WK_BoxList Where ComputerName=" & PcName '----------3 scm = New SqlClient.SqlCommand(sql, scn) scm.ExecuteNonQuery() Catch ex As Exception MessageBox.Show(ex.Message) End Try scn.Close() 環境 WindowsXP Pro SP2 VS2005Pro Sp1 SQL Server2005 ExpressEditon

  • INSERTとWHEREについて

    このようなデータベースがあるのですが、INSERT文を入れるとエラーになってしまいます。 +------+----------+----------------+----------+ | id | name | osusume | review | +------+----------+----------------+----------+ | 1 | エイリアン   | NULL | おもしろい | | 2 | スパイダーマン | NULL | NULL  | +------+----------+----------------+----------+ insert into movie(name,osusume,review) values('名無し',5,'つまらない') where id=2; 当たっているように思えるのですが、どこが間違っているのでしょうか??ご教示、お願いいたします。 ちなみにphpではこのようにデータベースに追記するつもりです。 $sql = <<<EOS insert into movie ( name, osusume, review ) values ( '$name', $osusume, '$review' ) WHERE id=2 EOS;

    • ベストアンサー
    • MySQL