特殊なフレームワークを使用せずに、基本レベルでデータベースと対話します。

このトピックは、.Netデータベースを操作するためのプロジェクトが多くのディスク領域を占有し、一般に20年前には草が緑で木が背が高いというウィザードの この声明に対する回答です。

前述のトピック( neuotq )の解説者の1人が次のように述べています。

サンドボックスに穴を掘るには、掘削機と建設チーム全体を使用しないでください


最新のフレームワークは、プログラマーに問題を解決するための多くのツールを提供することを理解することが重要です。 また、データベースから「数行のデータを取得」する必要がある場合は、ADO.Net Entity FrameworkまたはNHibernateで「レーザーサイトとの組み合わせ」を使用する必要はありません。 このようなツールは大規模プロジェクト向けに設計されていることを理解することが重要です。 大規模なプロジェクトでは、学期論文や論文ではなく、多額の費用がかかる大規模な商用システムと、自分の自転車を書くために余分な「1日(週、月)」(再び引用 )が顧客に数百(数千、数百万)はロシアのお金ではありません。 良い開発者と悪い開発者は、自転車を書くときと完成した自転車をいつ取るかを知っている点で異なります。 悪いものは、それぞれフレームワークを押しつぶすか、逆にどこでも自転車を書きます。 そして、開発者のツールはこれを責めるものではありませんが、彼はそうです。

すべて、私は私の哲学を退屈させません。 habrakatでは、掘削機を使用せずに.Netでデータベースを操作する方法について読むことができます。



そのため、アプリケーションに複数のテーブルの単純なデータベースがあり、実行する必要があるクエリのペアの高いパフォーマンスを実現する場合、ADO.Net Entity Frameworkまたは同等のものを使用する必要はありません。 SqlConnection、SqlCommand、およびSqlDataReaderクラスを使用すれば十分です。 デモンストレーションのために、WPFで簡単なウィンドウを作成します。

< Window x:Class ="sqlTest.Window1" <br> xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" <br> xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" <br> Title ="Window1" Height ="339" Width ="783" > <br> < Grid > <br> < Label Height ="28" HorizontalAlignment ="Left" Name ="label1" VerticalAlignment ="Top" Width ="120" > Connection String: </ Label > <br> < TextBox Height ="23" Margin ="126,2,0,0" Name ="connStr" VerticalAlignment ="Top" > Data Source=localhost;Initial Catalog=BlogNetTest;Integrated Security=True;MultipleActiveResultSets=True </ TextBox > <br> < TextBox Margin ="126,31,0,0" Name ="queryTB" AcceptsReturn ="True" TextWrapping ="Wrap" Height ="132" VerticalAlignment ="Top" > SELECT * FROM Users </ TextBox > <br> < Label Height ="28" HorizontalAlignment ="Left" Margin ="0,29,0,0" Name ="label2" VerticalAlignment ="Top" Width ="120" > Query: </ Label > <br> < TextBox Height ="125" Margin ="126,0,0,12" Name ="resultTB" VerticalAlignment ="Bottom" /> <br> < Button Height ="23" HorizontalAlignment ="Left" Margin ="12,0,0,114" Name ="button1" VerticalAlignment ="Bottom" Width ="108" Click ="button1_Click" > Execute </ Button > <br> </ Grid > <br> </ Window > <br><br> * This source code was highlighted with Source Code Highlighter .





次のようになります。



では、リクエストを実行して結果をウィンドウの下部のフィールドに挿入するコードを作成します。

using System;<br> using System.Data.SqlClient;<br> using System.Text;<br> using System.Windows;<br><br> namespace sqlTest<br>{<br> public partial class Window1<br> {<br> public Window1()<br> {<br> InitializeComponent();<br> }<br><br> private void button1_Click( object sender, RoutedEventArgs e)<br> {<br> try <br> {<br> resultTB.Text = ReadData(connStr.Text, queryTB.Text);<br> }<br> catch (Exception ex)<br> {<br> resultTB.Text = string .Format( "Error: {0}" , ex.Message);<br> }<br> }<br><br> private static string ReadData( string connectionString, string queryString)<br> {<br> var strBuilder = new StringBuilder ();<br> using ( var connection =<br> new SqlConnection(connectionString))<br> {<br> var command =<br> new SqlCommand (queryString, connection);<br> connection.Open();<br><br> var reader = command.ExecuteReader();<br><br> while (reader.Read())<br> {<br> for ( int i = 0; i < reader.FieldCount; i++)<br> {<br> strBuilder.AppendFormat( "{0} - {1};" , reader.GetName(i), reader[i]);<br> }<br> strBuilder.AppendLine();<br> }<br> reader.Close();<br> }<br> return strBuilder.ToString();<br> }<br><br> }<br>}<br> <br> * This source code was highlighted with Source Code Highlighter .





接続文字列に関する簡単な説明:この行は、データベースに接続する方法と、データベース用にデータベースを作成する方法の説明です 。 私の行は、私のプロジェクトの1つのテストデータベースを含むローカルのSQL Server 2005 Express Editionを参照しているため、機能しません。

基本的には以上です。 このソリューションは、ディスク上で100キロバイト、職場で20メガバイトのメモリを占有します。 このような大量のメモリは、最小メモリしきい値である約15メガバイトのWPFの使用によるものです。 このステートメントを検証するために、コンソールモードで動作するようにプログラムを書き直し、彼が約4メガバイトを食べるようにしました。 もちろん、これは小さくはありませんが、メモリ量がギガバイトで測定される今日では壊滅的なほど多くはありません。 はい、1989年にこのようなプログラムは、1 MBのRAM(50%)を搭載したマシンで500キロバイトのメモリを占有します。 現在、2 GBのRAM(1%)を搭載したマシンでは20メガバイトかかります。 しかし、1989年には、この例のように、このような原始的な機能でさえ1か月かけて実装し、わずか30分で実現しました。

WPFおよびコンソールプロジェクトを使用したアーカイブ

PSテキストの混乱をおaびします。1時間半しかかかりませんでした。

UPD: SQLClientが、私が直接知っているデータベースで動作するフレームワークの基礎として完全に使用されているという事実-私が参加した開発中の3つの商用プロジェクトのうち3つが使用しています。 彼らのことを知らず、学期論文/卒業証書で「穴を掘るための掘削機」を使用し、「データベースに直接リクエストを送信することはできません」と表示される内容をscる学生向けの記事。 資金を使用してデータベースを操作する方法を模索してインターネットを表面的に見ると、資料の90%がADO.Netデータセット、LINQ2SQLおよびEFに充てられていることがわかります。 実際、初心者は最初から間違ったツールを選んだため、それをペックしてから誓います。




All Articles