VB.NET2015からSQL Serverのデータを更新する(ADO.NET)
SQLでデータを更新する場合は、INSERT文を使用します。
SqlCommandクラスを作成し、CommandTextにSQL文を指定して、ExecuteNonQuery()を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
'データベースの更新 Private Sub SqlUpdate() Dim command As System.Data.SqlClient.SqlCommand = Con.CreateCommand() '実行するSQLクエリーを指定 command.CommandText = "UPDATE FileList SET Name = @Name,Date = @Date,Size = @Size" '結果が返ってくるまで待機する秒数 command.CommandTimeout = 30 '変換パラメーターの設定 command.Parameters.Add("@Name", SqlDbType.NVarChar).Value = "名称" command.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Parse("2018/12/07 12:34:56") command.Parameters.Add("@Size", SqlDbType.BigInt).Value = 1000 ' 指定した SQL コマンドを実行 command.ExecuteNonQuery() command.Dispose() End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//データベースの更新 private void SqlUpdate() { System.Data.SqlClient.SqlCommand command = Con.CreateCommand(); //実行するSQLクエリーを指定 command.CommandText = "UPDATE FileList SET Name = @Name,Date = @Date,Size = @Size"; //結果が返ってくるまで待機する秒数 command.CommandTimeout = 30; //変換パラメーターの設定 command.Parameters.Add("@Name", SqlDbType.NVarChar).Value = "名称"; command.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Parse("2018/12/07 12:34:56"); command.Parameters.Add("@Size", SqlDbType.BigInt).Value = 1000; //指定した SQL コマンドを実行 command.ExecuteNonQuery(); command.Dispose(); } |
使い方は、
・Dim command As System.Data.SqlClient.SqlCommand = Con.CreateCommand()
にて、グローバル変数のconからSqlCommandクラスを作ります。
・command.CommandText =
”UPDATE FileList SET Name = @Name,Date = @Date,Size = @Size”
にて、変更する項目と変更値を入力します。
@名称とすることで、パラメータ変数とすることができます。
・command.Parameters.Add(“@Name”, SqlDbType.NVarChar).Value = “名称”
パラメータ変数に値をセットするために、Parameters.Addを行います。
Addの引数は、パラメータ名、データ型(SqlDbType)を指定し、
.Valueに値を代入するだけです。
・command.ExecuteNonQuery()を実行します。
ここで注意点は、上記ソースを実行すると、データベース上のすべての内容が指定した値に書き換えられてしまいます。
UPDATE <テーブル名> SET <列名>= <式> WHERE <条件>
の様に、WHEREに条件を指定することで、特定の項目だけ書き換える事ができます。
いままで使ってきたテーブルには、行を特定する値がありませんでしたので、キーとなるIdの項目を追加しました。SQL ServerではIDENTITYの指定を行うことで、自動採番として追加毎に自動でインクリメントされる項目を作ることができます。後はWHERE Id=1といった指定をすることで、特定の行のみ書き換える事が出来ます。
以上が、基本的な使い方となりますので、SQL文を使いExecuteReader()かExecuteNonQuery()を使うことで大抵の事は出来るのでは無いでしょうか。
ディスカッション
コメント一覧
まだ、コメントがありません