- 締切済み
Visual Basic データベースに登録
お世話になっております。 どうしてもできない部分があり、質問させてください。 現在、Visual Basicからデータベースに登録できるようなツールを作っています。 StringBuilder.Appendメソッドを通して 条件に合致した社員にはデータを新しくINSERTするようなものです。 ここは問題なくできているのですが、このINSERTで追加されたすべての行をDataGridViewに表示して確認できればと試行錯誤しております。 単純にSELECT文を後に実行すれば、できるのですが、 今回のINSERTではなく、別途INSERTしたデータも抽出されてしまいます。 いま、追加したデータのみ表示ができる方法が有れば教えてください。 Visual Studio2017 Oracleデータベースを使用しています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (455/693)
私はDBに関すること、SQL文に関することはそれなりに理解しているつもりですが Visual Basicは扱ったことがなく Oracleデータベースについては、深い知識がないので、 SQL文だけに限って返信します。 提示のINSERTを行ったの続き COMMIT; 'この行は不要かも select * form テーブル名 where SYSDATE >= 'yyyymmddhh24miss' といったSQLを投げ、結果セットを受け取ればいいのではないかと思います。
- HohoPapa
- ベストアンサー率65% (455/693)
先刻承知かもしれませんが select文を実行すれば結果(結果セットと呼ぶ)が返ってきます。 一方、insert文、update文を実行した場合は 結果セットは返ってきません。 今回の課題は、DBに所定のレコードを追加した後に 追加したレコードだけを得たいということと思います。 であれば、例えば、 テーブルのフィールドに「レコードの追加日時」や「追加したユーザ」などの列を設け、 得たいレコードの条件をwhere区で指定してselectするとか、 フィールドにレコードの連番の列を追加し、 insert文を実行する前に連番の最大値を取得し、 insert後に、この最大値を超えるレコードたちをWhere区で指定してselectする といった対応が候補となりましょう。
補足
回答ありがとうございます! insertするものには、INSERT_YMDのカラムがあるのでそれを使おうと思います。 VBからinsertするときは Public Fanction 登録(引数あり)As Integer Try Dim INSERT As StringBuhlder = New StringBuilder INSERT.Append(" INSERT INTO .... ") ・ ・ ・ ・ INSERT.Append(" TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), ") ・ ・ executeNonQueryからinsertしています。 登録後、SELECTを実行しようと思いますが、insertでいれたSYSDATEをそのまま使う方法がわからないです(・・;) ボタンをクリックしたら、insertもselectも実行できるツールを作っています。 アドバイスあれば教えてください。