この記事では、オブジェクト パラメータをインスタンス化して MySQL でデータをクエリする方法を紹介します。 (ソースコード) には一定の参考価値があります。困っている友人が参照できます。お役に立てれば幸いです。 パブリック静的文字列 QueryByEntity<T>(T t) ここで T : new() { 文字列 resultstr = string.Empty; MySqlDataReader リーダー = null; 試す { 型 type = typeof(T); PropertyInfo[] properties = type.GetProperties(); string select = string.Format("Select * from {0} {1}", type.Name, "{0}"); string where = string.Empty; foreach (propertyInfo property in properties) { var value = t.GetPropertyValue<T>(property); if (value != null && !value.Equals(property.GetDefaultValue())) { if (string.IsNullOrEmpty(where)) { where = string.Format(" where {0}='{1}' ", property.Name, value); } それ以外 { where = string.Format("{0} and {1} = '{2}'", where, property.Name, value); } } } select = string.Format(select, where); MySqlConnection connection = OpenConnection(); if (connection == null) return resultstr; MySqlCommand _sqlCom = 新しい MySqlCommand(選択、接続); リーダー = _sqlCom.ExecuteReader(); リスト<T> tList = 新しいリスト<T>(); while (reader.Read()) { T t1 = new T(); foreach (プロパティ内のPropertyInfoプロパティ) { if (!string.IsNullOrEmpty(reader[property.Name].ToString())) { property.SetMethod.Invoke(t1、新しいオブジェクト[] { reader[property.Name] }); } } tList.Add(t1); } 結果str = JsonConvert.SerializeObject(tList); } catch (例外例) { Logging.Error(string.Format("データベースのクエリに失敗しました、{0}", ex.Message)); } ついに { if (リーダー != null) { リーダー.Close(); リーダーを破棄します。 } } 結果文字列を返します。 }内部静的クラス ObjectExtend { パブリック静的オブジェクト GetPropertyValue<T>(このオブジェクト obj、PropertyInfo プロパティ) { 型 type = typeof(T); プロパティ情報 propertyInfo = type.GetProperty(property.Name); if (propertyInfo != null) { propertyInfo.GetMethod.Invoke(obj, null) を返します。 } null を返します。 } パブリック静的オブジェクト GetDefaultValue(この PropertyInfo プロパティ) { property.PropertyType.IsValueType を返します。Activator.CreateInstance(property.PropertyType) : null; } } パラメータをインスタンス化し、プロパティに値を割り当て、オブジェクトをパラメータとして渡し、リフレクションを通じてオブジェクト名、列名、列値を取得します。オブジェクト名はテーブル名と一致している必要があり、属性は列名と一致している必要があります。 123WORDPRESS.COM をご愛顧いただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: WeChatアプレット開発の実践スキル:データの転送と保存
>>: Windows で Graphviz をインストールして開始する方法のチュートリアル
序文WeChat ミニプログラムは新しいオープン機能を提供します!ついにミニプログラムにHTMLペー...
Baidu の擬似静的の説明を引用します。擬似静的は、実際の静的に相対的です。通常、検索エンジンの使...
1. MySQLを削除する a. sudo apt-get autoremove --purge m...
iPadなどのモバイル端末の普及により、人々がモバイル端末で読書に費やす時間はますます長くなり、読...
W3C は HTML の標準をいくつか確立していますが、ブラウザは独自の定義済みスタイルに従って W...
1. 設置環境Dockerは次のCentOSバージョンをサポートしていますCentOS 6.5 (6...
序文:一部のアプリケーション シナリオでは、成績や年齢によるランキングなど、ランキングの問題が発生す...
この記事では、テーブルの動的な色の変更を実現するためのJavaScriptの具体的なコードを参考まで...
Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...
質問: 360ブラウザの互換モードなど、一部のブラウザでは、 <td style="...
1. Compose の紹介Compose は、マルチコンテナ Docker アプリケーションを定義...
1. はじめに以前は、Python アプリケーションの作成を開始したい場合、最初のステップはマシンに...
MySQL 5.7 以降では、多くのセキュリティ更新が追加されました。旧バージョンのユーザーは慣れて...
目次シーン設定ゲームリソース砲塔の回転動的に生成された弾丸衝突計算効果を高めるターゲットの動き弾薬庫...
参考までに、クリックナンバーゲームをネイティブJSで実装しました。具体的な内容は以下のとおりです。最...