2016年10月31日

【C#】LINQ to SQL (ExecuteQuery)


DataContextクラスのExecuteQueryメソッドでSQLクエリを直接記述して実行することもできます。

var db = new LinqTest01.DataClasses1DataContext();

var query = db.ExecuteQuery("SELECT [ID], [Name], [Type] FROM [T_Animals]");

foreach (var q in query )
{
    Console.WriteLine("{0}, {1}, {2}", q.ID, q.Name, q.Type);
}




2016年10月30日

GoPro用サクションカップ

以前、「GoPro HERO Session 買ってしまいました。」という記事を書きましたが、実はあれからいろいろと動画を撮っています。

いろいろといっても全部車載動画なのですが、今日はその車載動画を撮るのに必要なサクションカップというものをご紹介したいと思います。
ちなみにサクションカップとは、ゴムやプラスチック製の吸着カップのことをいいます。



今回私が購入したのは、「REC-MOUNTS ショートサクションカップマウント タイプ2 」というやつです。

Amazonとかを見ると結構いろんなサクションカップが売ってて、どれを買っていいのか正直とても迷うのですが、このサクションカップはGoPro用でサイズもコンパクトで、最初から車のフロントガラスに装着することを目的として作られているということで、ちょうど自分が求めてる条件に合致していました。

2016年10月29日

【VB】LINQ to SQL (実際のクエリを確認する方法)


LINQ to SQLでは、LINQのクエリをSQL文に変換してデータベースに送信して実行しているのですが、その送信されるSQLは確認するには以下のようにします。


Dim db = New LinqTest02.DataClasses1DataContext()

Dim query = From n In db.T_Animals
            Select n

'コンソールに出力
db.Log = Console.Out

For Each q In query
    Console.WriteLine("{0}, {1}, {2}", q.ID, q.Name, q.Type)
Next

LogプロパティにConsole.Outを割り当てることでSQLクエリがコンソールに出力されます。

結果は次のようになります。




2016年10月28日

【C#】LINQ to SQL (実際のクエリを確認する方法)


LINQ to SQLでは、LINQのクエリをSQL文に変換してデータベースに送信して実行しているのですが、その送信されるSQLは確認するには以下のようにします。


var db = new LinqTest01.DataClasses1DataContext();

var query = from n in db.T_Animals
            select n;

// コンソールに出力
db.Log = Console.Out;

foreach (var q in query )
{
    Console.WriteLine("{0}, {1}, {2}", q.ID, q.Name, q.Type);
}

LogプロパティにConsole.Outを割り当てることでSQLクエリがコンソールに出力されます。

結果は次のようになります。




2016年10月27日

【VB】LINQ to SQL (接続文字列を指定する)


O/Rデザイナーで作成すると、通常App.configにデータベースへの接続文字列が書かれるのですが、ソースの中で設定することもできます。

Dim connectionString As String = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB2;Integrated Security=True"

Dim db = New LinqTest02.DataClasses1DataContext(connectionString)



2016年10月26日

【C#】LINQ to SQL (接続文字列を指定する)


O/Rデザイナーで作成すると、通常App.configにデータベースへの接続文字列が書かれるのですが、ソースの中で設定することもできます。

string connectionString = @"Data Source=MOUSEPC\MSSQLSERVER;Initial Catalog=TESTDB2;Integrated Security=True";

var db = new LinqTest01.DataClasses1DataContext(connectionString);




2016年10月25日

【VB】LINQ to SQL


LINQ to SQLのやり方です。

LINQ to SQLは、データソースの対象がSQL Serverの場合に使います。


まずVisual Studioでプロジェクトを作成したら、新しい項目の追加で「LINQ to SQL クラス」を追加します。

次にサーバーエクスプローラーからテーブルをドラッグしてきて、O/Rデザイナーにドロップします。


するとこのようなT_Animalsという名前のエンティティクラスが作成されます。

あとは、次のようにコードします。

Sub Main()

    Dim db = New LinqTest02.DataClasses1DataContext()

    Dim query = From n In db.T_Animals
                Select n

    For Each q In query
        Console.WriteLine("{0}, {1}, {2}", q.ID, q.Name, q.Type)
    Next

End Sub


結果はこのようになります。
1, たま, 猫
2, ピーター, うさぎ
3, トム, 猫
4, お父さん, 犬
5, ふてニャン, 猫
6, プー, くま
7, ファーファ, くま
8, ラスカル, アライグマ
9, サトちゃん, 象
10, チーバくん, 犬
11, パトラッシュ, 犬


<参考サイト>
チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナー)


2016年10月24日

【C#】LINQ to SQL


LINQ to SQLのやり方です。

LINQ to SQLは、データソースの対象がSQL Serverの場合に使います。


まずVisual Studioでプロジェクトを作成したら、新しい項目の追加で「LINQ to SQL クラス」を追加します。

次にサーバーエクスプローラーからテーブルをドラッグしてきて、O/Rデザイナーにドロップします。


するとこのようなT_Animalsという名前のエンティティクラスが作成されます。

あとは、次のようにコードします。

static void Main(string[] args)
{
    var db = new LinqTest01.DataClasses1DataContext(c_connection);

    var query = from n in db.T_Animals
                select n;

    foreach (var q in query )
    {
        Console.WriteLine("{0}, {1}, {2}", q.ID, q.Name, q.Type);
    }
}


結果はこのようになります。
1, たま, 猫
2, ピーター, うさぎ
3, トム, 猫
4, お父さん, 犬
5, ふてニャン, 猫
6, プー, くま
7, ファーファ, くま
8, ラスカル, アライグマ
9, サトちゃん, 象
10, チーバくん, 犬
11, パトラッシュ, 犬


<参考サイト>
チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナー)


2016年10月23日

Bloggerに忍者メールフォームを設置する方法

このブログ、Bloggerを使わせてもらっているのですが、実はちょっと困ったことがあります。

それは標準のメールフォームを設置できる場所がサイドバーのガジェットだけだということです。

サイドバーだと必然的にお問合せフォームが小さくなってしまってなんかいまいちなんですよね。

そんな理由でいままでお問合せフォームは設置してなかったんですが、最近ちょっといいものを見つけたのでページのほうに設置してみました。

今日はそのやり方をご紹介します。


今回使用させていただいたのは、忍者ツールの「忍者メールフォーム」というやつです。

この前、「忍者おまとめボタン」を設置したときにもお世話になりました。

2016年10月22日

はじめてのGitHub - チュートリアルをまじめにやってみた



どうもです。

最近、だんだんと冷え込むようになってきて秋を感じるようになってきましたが、いかがお過ごしでしょうか。

ところでこのブログ、VisualSVN Serverの記事がとても人気がありまして、もう2年以上前に掲載した記事なのに、いまだにかなりのアクセスがあります。

そんなアクセスしてきている方には申し訳ないのですが、


実は・・・


もう使ってないんです!


VisualSVN ServerもTortoiseSVNも使ってないんです!


すみません。


実は、少し前にサーバーが壊れてしまいまして。
サーバーはRAID(ミラーリング)を組んでたんですが、ディスク2台とも壊れてしまって完全にデータが消失してしまいました。当然リポジトリも消えてしまいました。原因はよくわかりませんが、おそらくこの夏の暑さがいけなかったのかもしれません。

それで、またVisualSVN Serverを構築しなおそうか、またはパソコンだけでTortoiseSVNを使おうかとも思ったのですが、もう今の時代Subversionじゃないんじゃないか、やっぱGitなんじゃないかと。

しかも、ローカールに保存するんじゃなくてクラウド上で管理したいなと思いまして。

で、Gitのクラウドサービスでまっ先に思いついたのがGitHubでした。

そんなわけで、今回はじめてGitHubを使ってみましたので、その一部始終をご紹介します。

(注)GitおよびGitHubに関してはほんとにド素人なので、これから書くことに間違いがあるかもしれません。ご注意ください。もし、間違っている箇所がありましたら、やんわりとご指摘いただけるとありがたいです。

2016年10月21日

【VB】SqlDataAdapterによる追加・更新・削除


以前、SqlDataAdapterにより抽出したデータをDataGridViewに表示する方法をご紹介しましたが、今回はDataGridViewに表示したデータを変更したり削除したり、または追加して、それをSQL Serverに反映させる方法をご紹介します。

ちなみに、今回も開発ツールは、Visual Studio Community 2015 を使っています。


まず、フォームにこのようにコントロールを貼り付け、下記のように名前を付けてください。

コントロール 名前
DataGridView dgv
Button buttonView
Button buttonOK
Button buttonCancel
Button buttonApply

2016年10月20日

【C#】SqlDataAdapterによる追加・更新・削除


以前、SqlDataAdapterにより抽出したデータをDataGridViewに表示する方法をご紹介しましたが、今回はDataGridViewに表示したデータを変更したり削除したり、または追加して、それをSQL Serverに反映させる方法をご紹介します。

ちなみに、今回も開発ツールは、Visual Studio Community 2015 を使っています。


まず、フォームにこのようにコントロールを貼り付け、下記のように名前を付けてください。

コントロール 名前
DataGridView dgv
Button buttonView
Button buttonOK
Button buttonCancel
Button buttonApply

2016年10月19日

日経新聞がタダで読める!?



どうもです。

最近ちょっと株に興味を持ち初めまして、それでネットでいろいろ調べたりなんかしてるのですが、この前こんな記事を見つけてしまいました。
日経新聞が無料で読み放題? ネット証券のお得な活用法

なんと日経新聞をタダで読めるというんです。

えっ、そんなことできるの!?


ほんとうに読めるようになるのか実際に試してみました。


まずは証券会社に口座を開設します。

私が申し込んだのは、楽天証券です。


申し込みから解説までの簡単な流れは下記になります。

1.口座開設の申込
2.初期設定画面の入力
3.本人確認書類のアップロード
4.「ログイン情報のお知らせ(ID/パスワード)」の受取り(郵送)
5.マイナンバー(個人番号)の登録
6.口座開設完了

詳細は、こちらをご覧ください。


ちなみに私は、もともと楽天銀行に口座を持っていたので、そっちのルートから申し込みをしました。

だいたい口座開設完了まで1週間ぐらいかかると思います。
私の場合は、マイナンバーの登録を郵送で行ったのでもっと時間がかかってしまいましたが、スマホアプリ(iSPEED)で行えばもっと早くできると思います。


口座開設まで出来たらあとは簡単です。

まずはスマホアプリのiSPEEDを起動します。
(まだインストールしてない方は、先にインストールしてください。)

ちなみに以下の画面はAndroidの画面ですのでご注意ください。
iPhoneでもそんなに変わらないと思いますが。



iSPEEDを起動したら、「ログイン」をタップします。



ユーザー名とパスワードを入力して「ログイン」をタップ。



最初にこんな画面が出てきたら、「WEBからAndroidへダウンロード」をタップ。



次にメニュー画面を開き、「日経テレコン」をタップします。



「同意する」をタップ。



次に、右上のメニューボタンをタップします。



するとこのようなメニューが表示されるので、その中から「きょうの新聞」をタップします。



これですでに日経新聞の記事が読めるようになっています。
デフォルトで日本経済新聞朝刊になっていると思いますが、「変更」ボタンをタップすることで、下の画面のような他の媒体の選ぶことができます。





確かに日経新聞をタダで読むことができました。

しかし、一つだけ残念なことがあります。
それは、iPad用のiSPEEDからは日経テレコンが見れないことです。

自分はiPadで読めることを期待してたのでとても残念です。

ちなみにWindowsからだとを一定の条件をクリアしてないとタダで読むことができませんので注意が必要です。

興味がある方はぜひ試してみてください。

2016年10月18日

メニュー付きのDOSバッチファイルを作成する

以前、システムの初期設定などを行うときに、バッチファイルを組んでそれを納品先の担当者に実行してもらうということをやっていました。

担当者の方はシステムについては詳しくありませんでしたので、分かりやすい形で初期設定を行っていただく必要がありました。

そこで考えたのは、バッチファイルにメニューを表示して、担当者の方にはただメニューの番号を入力してもらうだけにするということです。
そうすれば手順を間違えたり、おかしな操作をしてしまうといったことが無くなります。


以下にそのバッチファイルの内容をご紹介します。

@echo off
REM ----- メニュー表示バッチ・ファイル

:TOP

echo *****************************************************************
echo * menu                                                          *
echo *                                                               *
echo *   1:メモ帳                                                    *
echo *   2:ペイント                                                  *
echo *   3:電卓                                                      *
echo *  99:終了                                                      *
echo *                                                               *
echo *****************************************************************

:MENUSTART

set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "

if %USR_INPUT_STR%==1 (
  goto EXECUTE_NOTEPAD
) else if %USR_INPUT_STR%==2 (
  goto EXECUTE_PAINT
) else if %USR_INPUT_STR%==3 (
  goto EXECUTE_CALC
) else if %USR_INPUT_STR%==99 (
  goto EXITTRAP
) else (
  echo メニューにその番号はありません。
  echo.
  goto MENUSTART
)

REM メモ帳の起動
:EXECUTE_NOTEPAD
notepad
cls
goto TOP

REM ペイントの起動
:EXECUTE_PAINT
mspaint
cls
goto TOP

REM 電卓の起動
:EXECUTE_CALC
calc
cls
goto TOP

:EXITTRAP
echo.
echo 終了します。
pause


実行画面


実際はもっと複雑なことをやってたのですが、分かりやすく単純化しています。
ポイントは、goto文を駆使しているところです。
プログラミングにおいて通常goto文はあまり良しとされてないのですが、バッチでこのような処理を行うにはどうしても必要になってきてしまいます。

バッチファイルならどの環境でも動きますし、また、ただのテキストファイルなので現場で修正するといったこともすぐに出来ます。

気になる方はぜひ試してみてください。


2016年10月17日

RadioSureでインターネットラジオを聞いてみよう



どうもです。

突然ですが、みなさんは家でパソコンを使ってる時って何か音楽とか聞いてますか?

私は、インターネットラジオをよく聞いています。

インターネットラジオとは、ネット上で放送されてるラジオのことで、電波で放送しているラジオをそのままネット上でもストリーム配信したり、またはネットだけで配信していたりします。

日本だと、radikoが有名だと思うんですが、あれは電波での放送をそのままネット上に流しているタイプになります。

そういったネット上のラジオが世界中にあって、何万という局の放送が聞けるんです。

で、どうやったら聞けるのかというと、それ用のソフトを使うと聞けます。

たとえば、Windows Media Player、iTunesとソフトで聞くことができます。

ただ、ラジオ聞くためだけにWindows Media PlayerやiTunesを起動するのはちょっと大げさというか、面倒なんですよね。

もっと手軽で速攻起動できるソフトはないのか?
ちょっと昔でいうとWinampみたいなソフトはないのか?

2016年10月16日

忍者おまとめボタンを付けてみた

どうもです。

このブログのテンプレートを変えてからいろいろカスタマイズを行っているのですが、最近もあるツールを導入してしまいました。

それは、「忍者おまとめボタン」

忍者おまとめボタンとは、ツイートボタンやいいねボタンなどのソーシャルボタンを手間無く簡単にまとめて設置できるサービスのことです。

最近変更したこのテンプレートにもデフォルトでソーシャルボタンが付いているのですが、なんか小さいし、種類も少ないし、ちょっといまいちなんです。

それで、自分でソーシャルボタンを作ってみようかなって思ったんですが、どうやって作っていいかよく分からないんですよね。

たぶんJavaScriptとかで書くんですよね。

おまえプログラマーだろ!そのくらいやれよ!という声が聞こえてきそうですが、すみませんJavaScriptは専門外でして。

そんなわけで手っ取り早く外部サービスを使わせていただきました。

2016年10月15日

ピロリ達の沈黙

今日、病院に行ってきました。

なんのためかって?

実は、8月にピロリ菌の除菌治療を行ったのですが、その除菌がうまくいったかの検査の結果を聞きに行ってきました。

結果は・・・



(+)陽性

つまり除菌失敗です。

ガーン!!

私のお腹の中にいたピロリ達はどうやらまだ生きていたようです。

2016年10月14日

マイクロソフトのSculpt Mobile Mouseを買ってしまいました。

この前キーボードを新調したという記事を書きましたが、実はマウスも新しくしてしまいました。


マイクロソフトのSculpt Mobile Mouse 43U-00038。色はブルーブラックです。

今までUSB接続のものを使っていたのですが、会社で初めてワイヤレスのマウスを使うようになってからその良さに気づき、それ以来自宅でもワイヤレスにしようと思っていました。

電気屋でいろいろ見て回り、実際に手に触れて感触を確かめてコレに決めました。

キーボードもそうですが、やはり実際に手で触った感触は大事です。
毎日使うものですので自分の手になじむかは重要です。

2016年10月13日

Bloggerで最新記事を表示させる方法

このブログでも使っているBlogger、無駄な広告も無く、Google AdSenseにも対応しててとても便利なんですが、一つだけ不便だなって思うところがあります。
それは、なぜか分からないんですが、最新記事を表示させる機能が無いことです。

そのくらいあってもいいと思うんですが、無いんですよね。

まあ、別になくてもいいかと思ってたのですが、最近になって、最新記事の表示がないと過去の記事で見に来てくれた方が気づかないでそのまま帰ってしまうんじゃないかと思うようになりまして。

それで、どうしたものかなあって、いろいろネットを検索しましたところ、便利そうなものを発見いたしましたのでご紹介します。


Blogger Random – Recent – Specific Label Posts Widget – All in One Post Feed Widget

URL:https://sneeit.com/blogger-random-recent-specific-label-posts-widget-all-in-one-post-feed-widget/

まずこのサイトにアクセスします。

2016年10月12日

Visual Studio 2015 Communityにセットアッププロジェクトを追加する

現在、Visual Studio 2015 Communityを使わせてもらっているのですが、残念なことにセットアッププロジェクトが無いんですよね。

以前は、Visual Studio 2008を使ってたんですが、それにはセットアッププロジェクトが付いてて簡単にインストーラーが作れて便利だったんですが、いつの間にか無くなってしまったんですよね。

それでちょっとあきらめてたんですが、この前ネットを検索してたら、どうも2015でも後付けで入れられるとのこと。しかもタダで。

さっそく入れてみました。

2016年10月11日

SqlDataAdapterにより抽出したデータをDataGridViewに表示する



SqlDataAdapterは、SQL Serverからデータを取得してデータセットに格納する役割を持っています。
また、データセットに格納したデータの変更をデータベースに反映させることもできます。

以下に、SQL ServerからSqlDataAdapterを使ってデータを抽出して、フォーム上のDataGridViewに値を表示する例を示します。

ちなみに、開発ツールは、Visual Studio Community 2015 を使っています。

まず、Visual Studioを起動したら新しいプロジェクトを作成してください。
作成は、メニューの[ファイル]-[新規作成]-[プロジェクト]から行えます。


選ぶのは「Windowsフォームアプリケーション」です。



プロジェクトを作成したら、フォームにツールボックスからDataGridViewとButtonを1個ずつ貼り付けてください。

DataGridViewとButtonの名前はそれぞれ以下のようにします。

コントロール 名前
DataGridView dgv
Button buttonView

そして、buttonViewのクリックイベントハンドラに下記のように記述します。

C#
private void buttonView_Click(object sender, EventArgs e)
{
    string ConnectionString = @"Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True";

    var cnn = new SqlConnection(ConnectionString);
    cnn.Open();

    // データアダプタオブジェクトの作成
    var adapter = new SqlDataAdapter("SELECT [ID], [Name], [Type] FROM [T_Animals]", cnn);

    // データセットオブジェクトの作成
    var ds = new DataSet();

    // 抽出したデータをデータセットに格納
    adapter.Fill(ds);

    // DataGridViewのデータソースにデータセットのテーブルをバインド
    this.dgv.DataSource = ds.Tables[0];
}

VB
Private Sub buttonView_Click(sender As Object, e As EventArgs) Handles buttonView.Click

    Dim ConnectionString As String = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True"

    Dim cnn = New SqlConnection(ConnectionString)
    cnn.Open()

    'データアダプタオブジェクトの作成
    Dim adapter = New SqlDataAdapter("SELECT [ID], [Name], [Type] FROM [T_Animals]", cnn)

    'データセットオブジェクトの作成
    Dim ds = New DataSet()

    '抽出したデータをデータセットに格納
    adapter.Fill(ds)

    'DataGridViewのデータソースにデータセットのテーブルをバインド
    Me.dgv.DataSource = ds.Tables(0)
End Sub



実行して「表示」ボタンを押すとDataGridViewにデータを表示されます。

2016年10月10日

SQL ServerのストアドプロシージャからOUTPUTと戻り値を受け取る



SQL ServerのストアドプロシージャからOUTPUTと戻り値を受け取る方法です。

ちなみに今回もSQL Serverにあらかじめ以下のようなテーブルを作成しています。

テーブル名:T_Animals

列名
[ID] [int] NOT NULL
[Name] [nvarchar](50) NULL
[Type] [nvarchar](50) NULL

格納されてるデータ
ID Name Type
1 たま
2 ピーター うさぎ
3 トム
4 お父さん
5 ふてニャン
6 プー くま
7 ファーファ くま
8 ラスカル アライグマ
9 サトちゃん
10 チーバくん
11 パトラッシュ

また、usp_get_outputという名前のストアドプロシージャをあらかじめ作っておきます。
USE [TESTDB]
GO
CREATE PROCEDURE [dbo].[usp_get_output]
 @ID int, 
 @Name nvarchar(50) OUTPUT
AS
BEGIN
 SET NOCOUNT ON;

 SET @Name = (SELECT [Name]
 FROM [dbo].[T_Animals]
 WHERE [ID] = @ID)

 RETURN 0
END

パラメータにOUTPUTがついてるものがありますが、これがアウトプット引数で、このパラメータによりデータを受け取ることができます。
また、終わりにRETURN 0とありますが、ここで指定してる「0」が戻り値になります。

C#
string ConnectionString = string.Empty;
ConnectionString = @"Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True";

var cnn = new SqlConnection(ConnectionString);
cnn.Open();

var cmd = new SqlCommand();
cmd.Connection = cnn;

// コマンド文字列の解釈方法を指定
cmd.CommandType = System.Data.CommandType.StoredProcedure;

// INPUT
int inputId = 5;

// データソースで実行するストアドプロシージャを指定
cmd.CommandText = "[usp_get_output]";
cmd.Parameters.Clear();
cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = inputId;

// OUTPUT
cmd.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 50);
cmd.Parameters["@Name"].Direction = System.Data.ParameterDirection.Output;

// RETURN
cmd.Parameters.Add("ReturnValue", System.Data.SqlDbType.Int);
cmd.Parameters["ReturnValue"].Direction = System.Data.ParameterDirection.ReturnValue;

cmd.ExecuteNonQuery();

Console.WriteLine("インプット:" + inputId.ToString());

string name = cmd.Parameters["@Name"].Value.ToString();
Console.WriteLine("アウトプット:" + name);

int rtn = (int)cmd.Parameters["ReturnValue"].Value;
Console.WriteLine("戻り値:" + rtn.ToString());

cmd.Dispose();
cnn.Close();

VB
Dim ConnectionString As String = String.Empty
ConnectionString = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True"

Dim cnn = New SqlConnection(ConnectionString)

cnn.Open()

Dim cmd = New SqlCommand()

cmd.Connection = cnn

cmd.CommandType = System.Data.CommandType.StoredProcedure

'INPUT
Dim inputId As Integer = 5

'データソースで実行するストアドプロシージャを指定
cmd.CommandText = "[usp_get_output]"
cmd.Parameters.Clear()
cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = inputId

'OUTPUT
cmd.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 50)
cmd.Parameters("@Name").Direction = System.Data.ParameterDirection.Output

'RETURN
cmd.Parameters.Add("ReturnValue", System.Data.SqlDbType.Int)
cmd.Parameters("ReturnValue").Direction = System.Data.ParameterDirection.ReturnValue

cmd.ExecuteNonQuery()

Console.WriteLine("インプット:" & inputId.ToString())

Dim name As String = cmd.Parameters("@Name").Value.ToString()
Console.WriteLine("アウトプット:" & name)

Dim rtn As Integer = DirectCast(cmd.Parameters("ReturnValue").Value, Integer)
Console.WriteLine("戻り値:" + rtn.ToString())

cmd.Dispose()
cnn.Close()

結果は下記のようになります。
インプット:5
アウトプット:ふてニャン
戻り値:0



2016年10月9日

SQL Serverにストアドプロシージャを使ってデータを追加する



SQL Serverにストアドプロシージャを使ってデータを追加する方法です。

ちなみに今回もSQL Serverにあらかじめ以下のようなテーブルを作成しています。

テーブル名:T_Animals

列名
[ID] [int] NOT NULL
[Name] [nvarchar](50) NULL
[Type] [nvarchar](50) NULL

格納されてるデータ
ID Name Type
1 たま
2 ピーター うさぎ
3 トム
4 お父さん
5 ふてニャン
6 プー くま
7 ファーファ くま
8 ラスカル アライグマ
9 サトちゃん
10 チーバくん
11 パトラッシュ

また、usp_ins_animals_dataという名前のストアドプロシージャをあらかじめ作っておきます。
USE [TESTDB]
GO
CREATE PROCEDURE [dbo].[usp_ins_animals_data]

 @ID int,
 @Name nvarchar(50),
 @Type nvarchar(50)
AS
BEGIN
 SET NOCOUNT ON;

 INSERT INTO [dbo].[T_Animals]
  ([ID]
  ,[Name]
  ,[Type])
 VALUES
  (@ID
  ,@Name
  ,@Type)
END

ちなみに@から始まる変数は、パラメータです。

C#
string ConnectionString = string.Empty;
ConnectionString = @"Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True";

var cnn = new SqlConnection(ConnectionString);
cnn.Open();

var cmd = new SqlCommand();
cmd.Connection = cnn;

// コマンド文字列の解釈方法を指定
cmd.CommandType = System.Data.CommandType.StoredProcedure;

// データソースで実行するストアドプロシージャを指定
cmd.CommandText = "[usp_ins_animals_data]";
cmd.Parameters.Clear();
cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = 12;
cmd.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 50).Value = "バリィさん";
cmd.Parameters.Add("@Type", System.Data.SqlDbType.NVarChar, 50).Value = "鳥";

cmd.ExecuteNonQuery();

cmd.Dispose();
cnn.Close();

VB
Dim ConnectionString As String = String.Empty
ConnectionString = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True"

Dim cnn = New SqlConnection(ConnectionString)

cnn.Open()

Dim cmd = New SqlCommand()

cmd.Connection = cnn

'コマンド文字列の解釈方法を指定
cmd.CommandType = System.Data.CommandType.StoredProcedure

'データソースで実行するTransact-SQLステートメントを指定
cmd.CommandText = "[usp_ins_animals_data]"
cmd.Parameters.Clear()
cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = 12
cmd.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 50).Value = "バリィさん"
cmd.Parameters.Add("@Type", System.Data.SqlDbType.NVarChar, 50).Value = "鳥"

'CommandTextをConnectionに送信し、SqlDataReaderを構築
cmd.ExecuteNonQuery()

cmd.Dispose()
cnn.Close()

基本的には、直接SQL文を書く方法と変わりません。
違うのは、CommandType の指定方法と、CommandText にストアドプロシージャ名を指定するところです。

結果をManagement Studioで見るとこのようになります。



2016年10月6日

SQL Serverのデータをストアドプロシージャを使って取得する



SQL Serverからストアドプロシージャを使ってデータを取得する方法です。

ちなみに今回もSQL Serverにあらかじめ以下のようなテーブルを作成しています。

テーブル名:T_Animals

列名
[ID] [int] NOT NULL
[Name] [nvarchar](50) NULL
[Type] [nvarchar](50) NULL

格納されてるデータ
ID Name Type
1 たま
2 ピーター うさぎ
3 トム
4 お父さん
5 ふてニャン
6 プー くま
7 ファーファ くま
8 ラスカル アライグマ
9 サトちゃん
10 チーバくん
11 パトラッシュ

2016年10月3日

【本】なぜ、あなたの仕事は終わらないのか



なぜ、あなたの仕事は終わらないのか スピードは最強の武器である
中島聡


ちょっと前に電車の広告で見て、気になったので買ってしまいました。

元マイクロソフトにいた中島さんが書かれた時間術の本ですが、なかなか面白いことが書かれています。特にプログラマーやってる人なんかは、この本に書かれていることが、「うん、うん、そうだよね。」っていう感じで理解できるんじゃないかと思います。

たとえば、冒頭の”「終わらない仕事」はこうなっている” のところに出てくるA君の話なんか、ほんとにこういうことあるよなって思って読んでしまいました。

まだ時間があるから頼まれた仕事はとりあえず後にして今やってる仕事を終わらせよう。でもそうしているうちに割り込みの仕事が入ってきたりして、結局徹夜しても終わらない。なんてことよくありますよねー。とくに若いうちは。