プログラム

SQLServerにC#でアクセスする(SqlCommand版)

これまでSQLサーバーにC#でアクセスしたことがなく、そのやり方を勉強した際に使用したものです。今回はSQLCommandによるアクセスの仕方になります。全3回に分けて記載していきます

DB接続の準備をする

検証用のSQLテーブルを作成する

今回、SQLに対して検証用に使用するテーブルをあらかじめ作成しておきます。以下のSQLコマンドは実際に使用したテーブルから生成したものになります

CREATE TABLE [dbo].[BooksTable](
	[BookId] [int] NOT NULL,
	[BookName] [varchar](250) NOT NULL,
	[BookISBN] [int] NOT NULL,
 CONSTRAINT [PK_BooksTable] PRIMARY KEY CLUSTERED 
(
	[BookId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

SQL接続文字列の作成

SQLに接続する際に使用する文字列を作成しておきます。今回は、ユーザー名とパスワードを使用して接続するようにしています

// DB登録用クラスを作成
public class BooksTableEntity
{
    public BooksTableEntity(int bookId, string bookName, int bookISBN)
    {
        BookId = bookId;
        BookName = bookName;
        BookISBN = bookISBN;
    }

    public int BookId { get; set; }

    public string BookName { get; set; }

    public int BookISBN { get; set; }
}

var builder = new SqlConnectionStringBuilder();
// DB接続先
builder.DataSource = dataSource;
builder.InitialCatalog = dbName;
// ユーザー名とパスワードでSQLに接続
builder.IntegratedSecurity = false;
builder.UserID = userId;
builder.Password = userPassword;
string connectionString = builder.ToString();

Sqlに情報を追加する

データベースにデータを登録します

public void Insert_SQLCommand(BooksTableEntity _booksTableEntity)
{
    string sql = @"
insert into BooksTable
(BookId,
BookName,
BookISBN)
values
(
 @BookId,
 @BookName,
 @BookISBN
)
";

    using (var connection = new SqlConnection(connectionString))
    using (var command = new SqlCommand(sql, connection))
    {
        connection.Open();
        command.Parameters.AddWithValue("@BookId", _booksTableEntity.BookId);
        command.Parameters.AddWithValue("@BookName", _booksTableEntity.BookName);
        command.Parameters.AddWithValue("@BookISBN", _booksTableEntity.BookISBN);
        command.ExecuteNonQuery();
    }
}

var insertBookEntity = new BooksTableEntity(1, "dbTestBook1", 123456789);
sqlConnection.Insert_SQLCommand(insertBookEntity);

Sqlの情報を取得する

データベースに登録されているデータを取得します

public void Read_SQLCommand()
{
    var sql = @"
select * from BooksTable
";
    var result = new List<BooksTableEntity>();
    using (var connection = new SqlConnection(connectionString))
    using (var command = new SqlCommand(sql, connection))
    {
        connection.Open();
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                result.Add(new BooksTableEntity(
                    Convert.ToInt32(reader["BookId"]),
                    Convert.ToString(reader["BookName"]),
                    Convert.ToInt32(reader["BookISBN"])));
            }
        } 
    }

    foreach(var item in result)
    {
        Console.WriteLine(string.Format("BookId:{0} BookName:{1}, BookISBN:{2}", item.BookId, item.BookName, item.BookISBN));
    }
}

sqlConnection.Read_SQLCommand();

Sqlの情報を更新する

データベースに登録されているデータを更新します
更新対象のデータが存在しない場合は、データを作成しています

public void Update_SQLCommand(BooksTableEntity _booksTableEntity)
{
    string sql = @"
update BooksTable
set BookName = @BookName,
    BookISBN = @BookISBN
where BookId = @BookId
";

    using (var connection = new SqlConnection(connectionString))
    using (var command = new SqlCommand(sql, connection))
    {
        connection.Open();
        command.Parameters.AddWithValue("@BookId", _booksTableEntity.BookId);
        command.Parameters.AddWithValue("@BookName", _booksTableEntity.BookName);
        command.Parameters.AddWithValue("@BookISBN", _booksTableEntity.BookISBN);
        var updateCount = command.ExecuteNonQuery();
        if(updateCount < 1)
        {
            Insert_SQLCommand(_booksTableEntity);
        }
    }
}

var updateBooksTableEntity = new BooksTableEntity(1, "dbTestBook001", 987654321);
sqlConnection.Update_SQLCommand(updateBooksTableEntity);

Sqlの情報を削除する

データベースに登録されているデータを削除します

public void Delete_SQLCommand(int _bookId)
{
    string sql = @"
delete BooksTable
where BookId = @BookId
");
    using (var connection = new SqlConnection(connectionString))
    using (var command = new SqlCommand(sql, connection))
    {
        connection.Open();
        command.Parameters.AddWithValue("@BookId", _bookId);
        command.ExecuteNonQuery();
    }
}

sqlConnection.Delete_SQLCommand(1);

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

お問い合わせ
お問い合わせ  | アドバンスド・ソリューション株式会社
お問い合わせ | アドバンスド・ソリューション株式会社

お問い合わせはこちら

-プログラム
-, ,