【C#】SQL Serverに接続してUPDATE・INSERT・DELETE文を直接実行する
C#でSQL Server (LocalDB)に接続する方法についてまとめました。操作はVisual Studioだけで完結するので、別途SQL Serverをインストールする必要はありません。LocalDBとは?無償で使えるSQL Ser.
hirahira.blog環境
- Visual Studio 2022
- .NET 8
プログラム全文
※.NET 6以降の最上位レベルのステートメントを使っています。下記コードをコンソールアプリの Program.cs に貼り付けるだけで実行可能です。
using Microsoft.Data.SqlClient; // 接続文字列 var connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=testdb;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False"; Update(); Insert(); Delete(); Console.WriteLine("処理が完了しました!"); // Update文を実行するメソッド void Update() < // IDが2のレコードのAgeを50に更新する var updateQuery = "UPDATE Test SET Age = 50 WHERE using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(updateQuery, connection)) < connection.Open(); command.ExecuteNonQuery(); >> // Insert文を実行するメソッド void Insert() < // パラメーターで中身を指定したレコードを追加 var insertQuery = @"INSERT INTO Test(Id, Name, Age, Birthday) VALUES (@id, @name, @age, @birthday)"; var name = "Nancy"; var age = "28"; var birthday = "1993/5/5"; using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(insertQuery, connection)) < connection.Open(); // パラメーターの追加 command.Parameters.AddWithValue("@id", 4); command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@age", age); command.Parameters.AddWithValue("@birthday", birthday); command.ExecuteNonQuery(); >> // Delete文を実行するメソッド void Delete() < // Idが3のレコードを削除 var deleteQuery = "DELETE FROM Test WHERE using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(deleteQuery, connection)) < connection.Open(); command.ExecuteNonQuery(); >>プログラムの解説
Update void Update() < // IDが2のレコードのAgeを50に更新する var updateQuery = "UPDATE Test SET Age = 50 WHERE using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(updateQuery, connection)) < connection.Open(); command.ExecuteNonQuery(); >>SqlCommand クラスの第1引数に実行するクエリを渡し、 ExecuteNonQuery メソッドを呼び出すことでSQLが実行されます。
Insert void Insert() < // パラメーターで中身を指定したレコードを追加 var insertQuery = @"INSERT INTO Test(Id, Name, Age, Birthday) VALUES (@id, @name, @age, @birthday)"; var name = "Nancy"; var age = "28"; var birthday = "1993/5/5"; using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(insertQuery, connection)) < connection.Open(); // パラメーターの追加 command.Parameters.AddWithValue("@id", 4); command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@age", age); command.Parameters.AddWithValue("@birthday", birthday); command.ExecuteNonQuery(); >>command.Parameters.AddWithValue("@パラメータ名", 代入したい値) と書くことでパラメータに値が代入されます。
Delete void Delete() < // Idが3のレコードを削除 var deleteQuery = "DELETE FROM Test WHERE using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(deleteQuery, connection)) < connection.Open(); command.ExecuteNonQuery(); >>参考:非同期処理による書き方
using Microsoft.Data.SqlClient; // 接続文字列 var connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=testdb;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False"; await UpdateAsync(); await InsertAsync(); await DeleteAsync(); Console.WriteLine("処理が完了しました!"); // Update文を実行する非同期メソッド async Task UpdateAsync() < // IDが2のレコードのAgeを50に更新する var updateQuery = "UPDATE Test SET Age = 50 WHERE using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(updateQuery, connection)) < await connection.OpenAsync(); await command.ExecuteNonQueryAsync(); >> // Insert文を実行する非同期メソッド async Task InsertAsync() < // パラメーターで中身を指定したレコードを追加 var insertQuery = @"INSERT INTO Test(Id, Name, Age, Birthday) VALUES (@id, @name, @age, @birthday)"; var name = "Nancy"; var age = "28"; var birthday = "1993/5/5"; using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(insertQuery, connection)) < await connection.OpenAsync(); // パラメーターの追加 command.Parameters.AddWithValue("@id", 4); command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@age", age); command.Parameters.AddWithValue("@birthday", birthday); await command.ExecuteNonQueryAsync(); >> // Delete文を実行する非同期メソッド async Task DeleteAsync() < // Idが3のレコードを削除 var deleteQuery = "DELETE FROM Test WHERE using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand(deleteQuery, connection)) < await connection.OpenAsync(); await command.ExecuteNonQueryAsync(); >>参考記事
コンソールアプリではなく、ASP.NET Core MVCアプリ上でSqlClientを用いたDB操作を行う方法については以下の記事を参照してください。
【ASP.NET Core MVC】SqlClientを使って直接SQLを実行するMicrosoft.Data.SqlClient(ADO.NETの仕組み)を使って、SQLを直接実行するMVCアプリの作成方法を解説します。DBはSQL Server (LocalDB) を使用しています。Entity Framework .
hirahira.blogEntity Framework Coreを使ったSQL Serverのデータ操作方法を知りたい場合は以下の記事を参照してください。
【C#】Entity Framework CoreでSQL Serverを操作するEntity Framework Core (EF Core) を使ってSQL Server (LocalDB) に接続し、DBを生成したりCRUD操作をする方法を解説します。※直接SQLでデータを操作する方法(ADO.NET)については以.
hirahira.blogおすすめ書籍
¥2,851 (2025/11/06 16:27時点 | Amazon調べ)関連記事
【C#】Entity Framework Coreを使ってSQLiteを操作するEntity Framework Core (EF Core) を使って、SQLiteからデータを取得したり更新する方法を解説します。(参考)EF Coreを使わずにデータを取得する方法についてはこちらSQLiteはインストール不要なので、.
【C#】MySQLに接続して直接SQLを実行するMySqlConnectorを使ってC#からMySQLに接続し、データの登録や取得をする方法について解説します。※Entity Framework Core を使ってMySQLを操作する方法については下記の記事をご参照ください。環境Visu.
【C#】SQL Serverに接続してSELECT文を実行するC#でSQL Server (LocalDB)に接続する方法についてまとめました。操作はVisual Studioだけで完結するので、別途SQL Serverをインストールする必要はありません。LocalDBとは?無償で使えるSQL Ser.
【C#】SQL Serverに接続してSELECT文を実行する 【Visual Studio】.NET Framework 4.8 をインストールして既存のプロジェクトに適用するコメント
コメントをどうぞ コメントをキャンセルプロフィール
ひらひら
最近の投稿- ASP.NET CoreとReactでTodoアプリを作る【.NET 10対応】
- Udemy個人向け定額プランを4ヶ月使ってみた正直な感想
- C#初心者におすすめのUdemy講座(Webアプリ開発編)【2026年版】