タグ

ADO.NETに関するJHashimotoのブックマーク (77)

  • 【.NET】固定長ファイル(複数行一組対応)の読み込み - Qiita

    Dim ts As TextFileStream = New TextFileStream Dim dsTable As DataSet Try ' スキーマ定義ファイルセット ts.SchemaPath = "Sample.ini" dsTable = ts.ImportData("Sample.txt", vbCrLf, True) MessageBox.Show("読み込み完了") Catch ex As Exception MessageBox.Show(ex.Message) End Try Imports System.Text Imports System.IO Imports System.Text.RegularExpressions Public Class TextFileStream Public Property Section As Dictionary(Of

    【.NET】固定長ファイル(複数行一組対応)の読み込み - Qiita
  • ASP.NET/ADO.NETからの実行だと遅いストアドプロシージャ問題、とりあえず解決にめど - misc.log

    昨日書いたこれ…… www.backyrd.net SQL Server Management Studioから実行すると1~2秒で結果を返すストアドプロシージャが、なぜかASP.NETのWebアプリから実行すると4分~5分もかかるという問題。とりあえず速度差が無くなったので報告。 対応案 Stackoverflowやらほかのブログなどから、以下の対応が有効そうというところまで昨日調べました。 ARITHABORTオプションをONにする(日語名:算術アボート) ストアドプロシージャを毎回リコンパイルする設定を行う ストアドプロシージャの引数をすべてローカル変数に移して使う ARITHABORTをONにする方策 残念ながら効果が見られませんでした。目的のストアドプロシージャを実行する前に、「SET ARITHABORT ON」というステートメントをExecuteNonQueryで流したので

    ASP.NET/ADO.NETからの実行だと遅いストアドプロシージャ問題、とりあえず解決にめど - misc.log
    JHashimoto
    JHashimoto 2016/08/10
    “SQL Server Management Studioから実行すると1~2秒で結果を返すストアドプロシージャが、なぜかASP.NETのWebアプリから実行すると4分~5分もかかるという問題。”
  • c# SqlCommandのデバッグ用テキストファイルを出力する - Qiita

    いまだにEFとか使いこなせず生のSqlを書きまくっているので、SqlCommandでエラーを吐いた時にSql Server Management Studioでデバッグしたくなったりします。パラメータクエリを利用している場合は、Sql Server Management Studioにパラメータを定義したりするのが辛いため、デバッグ用のsqlをテキストファイルに出力するようにしてみました。不格好ですいません。 同様の悩みの方、いらっしゃいましたら情報共有などよろしくおねがいします。 NuGetで以下してます。 PM> Install-Package IX-MAIN using System.Data.SqlClient; namespace Implem.Sample { class Program { static void Main(string[] args) { var cmd =

    c# SqlCommandのデバッグ用テキストファイルを出力する - Qiita
  • C#で Bulk Insert のサンプル - Qiita

    C# で大量のデータをDatasetでインサートしようとすると遅くて使えないと思いSSISで処理を書いていた。 今更だがSqlBulkCopyを知ることができた。 下記コードはOracleからSQLServerへデータをインポートするサンプルであらかじめSQL Server Management Studioのインポート機能を使いOracleからテーブル情報のみ取得してSQL Serverにテーブルを作成してある。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Threading.Tasks; using Oracle.DataAccess.Cl

    C#で Bulk Insert のサンプル - Qiita
    JHashimoto
    JHashimoto 2015/02/07
    “C# で大量のデータをDatasetでインサートしようとすると遅くて使えないと思いSSISで処理を書いていた。 今更だがSqlBulkCopyを知ることができた。”
  • 1つのDbDataAdapterで、より簡単に複数のテーブルを更新することは可能でしょうか?

    C# 2012 .NET Framework 4.5 DbDataAdapter.Update()を利用して、簡易的にテーブル更新を行おうと考えています。 DbDataAdapter.InsertCommandを明示的に指定することで、求めた1つのテーブルの追加登録を行うことは確認しました。 が、現実的な例を挙げると、たとえば以下のようなSELECT句で、DataTableを生成していた場合に、 複数テーブルの更新を行う方法がわかりません。 SELECT TBL1.COLUMN1, COLUMN2, TBL2.COLUMN1 FROM TBL1, TBL2 WHERE TBL1.COLUMN1 = TBL2.COLUMN1 この時、TBL1を追加登録するクエリをInsertCommandに設定してUpdate()を実行すると、正しく完了します。 求めるのは、そのあとに、TBL2も併せて追加

  • DataSetのRejectChangeでエラーが発生する

    DataSetのDataTableに特定のデータを特定の順番でAddしたあとに、DataSet.RejectChanges()メソッドを呼ぶとエラーが発生して困っております。 以下、サンプルコードになります(型付データセットに番地(Addr)列を持つテーブルCustomerを作成しています。) private void buttonRead_Click(object sender, EventArgs e) { //NGデータ string[] data = new string[] { "2-2-13", "22-13", "2-21-3" }; //OKデータ(データの並び順が違うだけでエラーにならない) //string[] data = new string[] { "22-13", "2-2-13", "2-21-3" }; DataSet1 ds = new DataSet1(

    JHashimoto
    JHashimoto 2014/08/06
    “DataSetのDataTableに特定のデータを特定の順番でAddしたあとに、DataSet.RejectChanges()メソッドを呼ぶとエラーが発生して困っております。”
  • Entity Framework 6と非同期をサポートしたORM Profiler バージョン1.5

    Rustが再評価される:エコシステムの現状と落とし穴 In this article, we share findings and insights about the Rust community and ecosystem and elaborate on the peculiarities and pitfalls of starting new projects with Rust or migrating to Rust from othe...

    Entity Framework 6と非同期をサポートしたORM Profiler バージョン1.5
    JHashimoto
    JHashimoto 2013/10/22
    ”コネクション数やコマンド数があらかじめ決めておいたしきい値を超えたときにリアルタイムで分析する機能を持っている。"
  • 型なしDataSetと型付DataSet、そして片想いORマッピング的な何か。 - Bug Catharsis

    ネタ元 山大@クロノスの日記 - アンチ型付DataSet派の自作ORマッピングより なぜ型付DataSetを使うのか、型なしDataSetは使わないのか 型付DataSetについては、嫌な思い出も少なくないので不満がないわけでもないのだけど、 常識的に考えて「型付DataSetを使うべきだよね。*1」というのは、もちろん知識として知っているつもり。 その理由は大きく3つあって、まずIDEのインテリセンスによってプログラミングの効率化が期待できること。 そして、コンパイル時に型チェックが行われるため、実行時の型変換エラーを未然に防げること。 また、コンパイル時に型が決定されているため実行時の列へのアクセスパフォーマンスが向上すること。 いずれも、システム開発をする上では生唾モノのおいしいメリットであるから、部分的に型なしDataSetを利用することはあるものの、 なるべく型付DataSe

    型なしDataSetと型付DataSet、そして片想いORマッピング的な何か。 - Bug Catharsis
    JHashimoto
    JHashimoto 2013/07/02
    "DataRowに片想いORマッピングするDataRowTypeMapperクラスで、やってみた。Nullable型のFieldおよびPropertyに対してマッピングすることができる。"
  • アンチ型付DataSet派の自作ORマッピング - レベルエンター山本大のブログ

    VisualStudio2005を使ってるが、 「型付DataSet」にはいろいろ不満がある。 自動的に作られるのはいいけど、 接続文字列まで内部に持ってたり、 時々壊れて、XSDビューで開けなかったり、 TableAdapterに書き込んだクエリの メンテナンスをしようと思うと、 いちいち、重たいXSDビューを開かなくてはならずイライラする。 また、TableAdapterを必死につくったのに、DBスキーマの変更があったときには結局コンバートできず ウィザードやら、プロパティビューやらをこつこつ叩いて作り直した。 メモリ上のデータの保存場所としても普通のDataTableのほうが使いやすい。 例えば、一意制約が邪魔になることも多かった。 正直、もう2度とごめんだとおもった。 (たとえ、僕の作り方が悪かったんだとしても。。。) ただ、データを型付きのオブジェクトで扱えるのは嬉しい。 結局、

    アンチ型付DataSet派の自作ORマッピング - レベルエンター山本大のブログ
    JHashimoto
    JHashimoto 2013/07/02
    "以下の「DataTableUtil.cs」がORMと呼べる部分のすべてだ。あとは、DBカラムと同じフィールドを持つPOJO(ここでは「User.cs」)を作ればおしまい。"
  • 50代におすすめのマッチングアプリは

    病院は時間がかかりますが、皮ふ科に行ったら40代の人に今日は2時間以上かかると言われました。マッチングアプリ 50代というのは混むものだと覚悟してはいるものの、相当な会える人がかかるので、ホテルの中はグッタリしたマッチングアプリ 50代になってスタッフさんたちも平謝りです。近頃はマッチングアプリ 50代のある人が増えているのか、50代のシーズンには混雑しますが、どんどん人が長くなっているんじゃないかなとも思います。会える人は以前より増えて今年も近所に出来たのですが、ぼっちゃりの数が多すぎるのでしょうか。困ったものです。 先週、おかずの添え物に使うつもりでいたら、マッチングアプリ 50代を使いきってしまっていたことに気づき、かるめとパプリカと赤たまねぎで即席の付き合いたいを作ってその場をしのぎました。しかし20代にはそれが新鮮だったらしく、マッチングアプリ 50代なんかより自家製が一番とべ

    JHashimoto
    JHashimoto 2013/07/02
    "VisualStudioがコードを自動生成することで実現しているが、自動生成するのは最初の1回のみで、あとでデータベースが変更されたときに、自動で追従させる方法がない。 "
  • データコンバートに explicit を使う | Moonmile Solutions Blog

    C#のあまり知られていない機能シリーズってことで、explicit を使ってデータコンバートしましょうってのを試してみます。と言いますか、linq to xml いらないよもどきを作っている最中に、そういえばキャストもオーバーライドができたよなぁ、ってところで気づきました。 一般的な型のコンバートは↓のようにするのが普通なのですが… 型なしDataTableから型付きDataTableにコピーする方法 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2047 いちいち、何とか.CONV 関数を作るのがうざったいですよね。と言うか、使うときに Conv しているのが、ちょっとってな感じなのです。変換しているのが分かり易いといえば分かり易いのですが、C++ 風に言えば、型から型へキャストっていうのも明示的な変換な訳

    JHashimoto
    JHashimoto 2013/04/08
    "★のところで、DataTable から 型付の DataTableProduct に変換しています。ここのところ、普通は converet 関数を作るところなのですが、こんな風に明示的なキャスト(explicit)を使うことができます。"
  • 型なしDataTableから型付きDataTableにコピーする方法 | Moonmile Solutions Blog

    最近だと、LINQ to SQL や LINQ to Entities があるので、DataSet/DataTable はあまり使わないのですが、ADO.NET と云えば、DataAdapter と DataSet の組み合わせでした。 その頃は、データベースのテーブルを型付で取ってこれる、型付きDataSetの存在が結構大きかったのです。 どういうことかというと、DataTable を直接扱ってしまった場合、 foreach ( DataRow row in dt.Rows ) { int id = (int)row["id"]; ... } のように、DataRow から値を取ってくる場合は、列名を指定しないと駄目かつキャストをしなければならず、という2重苦が待っています。これが、文字列なので、ええ、ちょっと間違うとえらいことになってしまうのです。PHP だと、こんな風に書くのが普通な

    JHashimoto
    JHashimoto 2013/04/08
    "これをコンバーターのクラスを用意して、型なしから型付にコピーできるようにしてしまおう、というものです。で、MyDataTable, MyDataRow の作成はなるべく手間をかけたくないという訳で。"
  • 意外と遅い DataTable 、なので List を使うと 5 倍早くなる | Moonmile Solutions Blog

    以前から気になっていたのですが、DataTable/DataSet を使うと遅いのでは?と思っていました。 実際、Visual Studio で自動生成する型付の DataTable を使うと思ったように性能がでないことが多く、結局 SQL でチューニング、ってことになります。 で、具体的に遅そうなところを実験してみました。 単純に DataTable の性能を比較したいので、データベースには使わず値の代入だけ実験します。 列が 100 のテーブルを想定する。 行数を 10000 件挿入する。 これを次のパターンで比較します。 普通に DataTable を使う With 構文を使って、高速化する? for earc を使ってカウンタを使わない方法 名前を使わずに index を使う generic list を使う generic list で構造体/クラスを使う 先に結論から書くと、1

    JHashimoto
    JHashimoto 2013/04/08
    "●データベースは SqlCommand でアクセス●取得したデータのアクセスは generic List を利用とする組み合わせ一番早いわけです。"
  • neue cc - 並列実行とSqlConnection

    どうも、ParallelやThreadな処理が苦痛度100なペチパーです。嘘です。空前のThreadLocalブームが来てたり来てなかったりする昨今です。あ、謎社の宣伝しますとグリーとグラニ、「GREE」におけるソーシャルゲームの提供などについて戦略的業務提携に合意というわけで、ぐりとぐら、としかいいようがない昨今でもあります。その日に開催されていたGREEプラットフォームカンファレンスでは、謎社はC#企業になる!と大宣言したので、ちゃんと実現させていきたいところです、いや、むしろそのためにフル回転しています。 そんな宣伝はおいておいて題なのですけれど、SQL。データベース。大量にクエリ発行したい時など、パラレル実行したいの!インサートだったら当然BulkInsertが一番早いんですが、Updateとかね。シンドイんだよね。あとUpsert(Merge/ON DUPLICATE KEY

    JHashimoto
    JHashimoto 2013/03/10
    "というわけでスレッドセーフなSqlConnectionを作りましょう"
  • [Effective C#] 項目23 クラス内のオブジェクトの参照を返さないようにすること | まさくらのブログ

    日の Effective C# は「項目23 クラス内のオブジェクトの参照を返さないようにすること」です。 これ大事なんですけどね。守りたいんですが、ついつい面倒で…。 public class Foo { public int Value { get; set; } } public class Sample { private Foo _sampleFoo = new Foo(); public Foo SampleFoo { get { return _sampleFoo; } } }

    JHashimoto
    JHashimoto 2013/03/09
    "書籍の方に戻って。DataSet (というか DataTable) を readonly で公開する方法が書かれています。"
  • 大島 俊齊(shunsai ohshima) 技術メモブログ 12/02/08 型付きデータセットに対する考察

    これまでデータアクセス部分の実装はスクラッチで行ってきたのだけど、短期的に納入しなければならない案件があったため、型付きデータセットとアダプターを用いた開発を行うことになった。 その過程の中で自分が感じたところをメモ。 データストアがSQL Serverであれ、Oracleであれ、MySQLであれ、はたまたACCESSやXMLファイルであっても、UIDBとのデータのやりとりを行うための中間オブジェクトは必要になってくる。 例えば、社員番号と社員名だけがあるテーブルがある場合、それらをアプリケーションで操作するための中間オブジェクトとそのオブジェクトグラフが必要になる。 しかし、その中間オブジェクトの定義は何か特別な知識やロジックを構築することはほとんどなく、パターン化されているためそこに対して労力をかける時間はもったいない。というわけで、VisualStudioを利用すると既存のテーブル

    JHashimoto
    JHashimoto 2013/01/09
    "これはデザイナ上のプロパティからNULLでいいか、それとも例外を発生させるか、別の値に変換するか選択できるのだが、なんらかの事情からその型付き情報を再構築したときはクリアされてしまう。"
  • ADO.NETの型つきデータセットを自分で実装する方法 - seraphyの日記

    概要 Visual StudioのExpressでない有償版か、もしくはExpressであってもmdfファイルをローカルに持つSQLServerへのデータベースアクセスでは、Visual Studioのアドインまたは内蔵されるツールによって、データベースへのアクセスをタイプセーフにアクセスできるようにする「型つきデータセット」なるソースコードを自動的に生成することができる。 たとえば、Oracleの場合であれば、Oracle Develoer Tools for Visual Studioを導入することで、テーブルへのアクセスを型つき(タイプセーフ)で行うことができるようになる。 ただし、Visual StudioのExpress版の場合、アドイン形式でのツール類は一切動作しないため、Oracle Developer Tools for Visual Studioを使うことはできない。*1

    ADO.NETの型つきデータセットを自分で実装する方法 - seraphyの日記
    JHashimoto
    JHashimoto 2013/01/09
    "ここでは「型つき」のメリットを享受するのが目的なので、ここは部分的にのみ対応する簡易のテーブルアダプタクラスを作成する。"
  • neue cc - DataSetについて

    けちょんけちょんに言ってるとか言ってないとかで言えば言ってるので、遅まきながらその理由などをつらつらと。正直なところDataSetなんて現代の観点から使ってみれば、一発でどれだけクソなのか自明だろう、ぐらいに思ってたので別に言うまでもないと思ってたので特に述べてなかったのですが、意外と支持の声も大きいのですね。困惑するぐらいです。 DataSetというと型付きと型無しがありますが、形無しのほうは、もういらないんじゃないかな。カジュアルな用途ならExpandoObjectを使ってくれという感じだし、そうでないなら、C#で型無しのヘヴィな入れ物とか利点を損ねるしかないわけで。せめてdynamicに合わせた作り直しが必要よね。 それでもADO.NETと密接に結びついていて、たとえばSqlBulkCopyはDataTableしか受け取らないなどがある。だから必要か、というと、そうじゃあなくて。そう

    JHashimoto
    JHashimoto 2013/01/08
    "長大奇怪なXMLに保存されるのでコンフリクトが発生したらマージ不能。"
  • Microsoft サポート対象サービス パック

    JHashimoto
    JHashimoto 2012/10/29
    "この資料でを実装する方法、および他のDataTableオブジェクトの列の一意な値が含まれます、データ テーブルオブジェクトを作成するサンプル コードを含むDataSetHelperクラスを使用する方法を示しています。"
  • Managing an @@IDENTITY Crisis

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. William Vaughn Beta V Corporation April 2003 Applies to: Microsoft® ADO.NET Microsoft SQL Server™ Summary: Discusses a strategy for returning newly created Identity values after the INSERT is executed. Letting SQL Server generate Identity values might ma

    Managing an @@IDENTITY Crisis
    JHashimoto
    JHashimoto 2012/10/17
    "ADO.NET ではこの方法に対応できます。AutoIncrementSeed および AutoIncrementStep の両方を -1 に設定します。そうすると、新規生成行はクライアントで一意となります。"