이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 41320|회답: 12

[ASP.NET] [DBHelp]는 반사 기술을 사용해 객체를 리스트로 캡슐화합니다

[링크 복사]
게시됨 2015. 4. 20. 오후 2:52:57 | | | |
이 게시물은 2015-4-21 16:09에 Delver_Si가 마지막으로 편집했습니다.

어떤 유형의 법인이 주어지고, 어떤 유형의 법인 컬렉션이 반환되는지에 대해

  1. //得到一个list<T>
  2.         public static List<T> getList<T>(string strSql)
  3.         {
  4.             List<T> list = new List<T>();

  5.             SqlConnection sqlConn = new SqlConnection(strConn);
  6.             SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
  7.             sqlConn.Open();
  8.             SqlDataReader sqlDR = sqlComm.ExecuteReader();

  9.             while (sqlDR.Read())
  10.             {
  11.                 //得到T的类型
  12.                 Type t = typeof(T); ;

  13.                 //查看类中的属性:
  14.                 PropertyInfo[] pis = t.GetProperties();
  15.                 // 用反射生成对象
  16.                 T model = Activator.CreateInstance<T>();
  17.                 foreach (PropertyInfo pi in pis)
  18.                 {
  19.                     if (pi!= null)
  20.                     {
  21.                         //取得特定字段并赋值
  22.                         pi.SetValue(model, sqlDR[pi.Name].ToString(), null);
  23.                     }
  24.                     }

  25.                 list.Add(model);
  26.             }
  27.             sqlConn.Close();

  28.             return list;

  29.         }
코드 복사

전부 다DBHelp.cs
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data;
  6. using System.Data.SqlClient;
  7. using System.Reflection;

  8. namespace ManualAssign
  9. {
  10.     public class DBHelp
  11.     {
  12.         //数据库连接字符串
  13.         private static string strConn = "server=.;database=ManualAssign;integrated security=true";

  14.         //得到一个DataTable
  15.         public static DataTable getTable(string strSql)
  16.         {
  17.             SqlConnection sqlConn = new SqlConnection(strConn);
  18.             SqlDataAdapter sqlDA = new SqlDataAdapter(strSql,sqlConn);
  19.             DataTable dt = new DataTable();
  20.             sqlDA.Fill(dt);
  21.             return dt;
  22.         }

  23.         //增删改
  24.         public static void upDateDB(string strSql)
  25.         {
  26.             SqlConnection sqlConn = new SqlConnection(strConn);
  27.             SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
  28.             sqlConn.Open();
  29.             sqlComm.ExecuteNonQuery();
  30.             sqlConn.Close();
  31.         }


  32.         //得到一个list<T>
  33.         public static List<T> getList<T>(string strSql)
  34.         {
  35.             List<T> list = new List<T>();

  36.             SqlConnection sqlConn = new SqlConnection(strConn);
  37.             SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
  38.             sqlConn.Open();
  39.             SqlDataReader sqlDR = sqlComm.ExecuteReader();

  40.             while (sqlDR.Read())
  41.             {
  42.                 //得到T的类型
  43.                 Type t = typeof(T); ;

  44.                 //查看类中的属性:
  45.                 PropertyInfo[] pis = t.GetProperties();
  46.                 // 用反射生成对象
  47.                 T model = Activator.CreateInstance<T>();
  48.                 foreach (PropertyInfo pi in pis)
  49.                 {
  50.                     if (pi!= null)
  51.                     {
  52.                         //取得特定字段并赋值
  53.                         pi.SetValue(model, sqlDR[pi.Name].ToString(), null);
  54.                     }
  55.                     }

  56.                 list.Add(model);
  57.             }
  58.             sqlConn.Close();

  59.             return list;

  60.         }

  61.     }
  62. }
코드 복사



점수

참가자 수1MB+1 기여하다+1 무너지다 이유
작은 쓰레기 같은 놈들 + 1 + 1 정말 강력해!

모든 평점 보기





이전의:루이제 학교 네트워크가 불안정하고 자주 끊기는데, 해결책이 있어요!
다음:일본, 초고속 카메라 개발
 집주인| 게시됨 2015. 4. 20. 오후 3:56:40 |
샤오자자 2015-4-20 15:36에 게시됨
밤에 시도해볼게요. 예시가 있으면 더 좋겠네요

예시가 있습니다
 집주인| 게시됨 2015. 4. 20. 오후 3:56:38 |
샤오자자 2015-4-20 15:36에 게시됨
밤에 시도해볼게요. 예시가 있으면 더 좋겠네요

예시가 있습니다
게시됨 2015. 8. 1. 오후 3:57:53 |
첨부된 것은 DBHelp 트랜잭션 실행 코드입니다

게시됨 2015. 4. 20. 오후 3:36:14 |
밤에 시도해볼게요. 예시가 있으면 더 좋겠네요
 집주인| 게시됨 2015. 4. 21. 오후 4:10:01 |
업데이트
게시됨 2015. 4. 21. 오후 4:50:50 |
압축된 패키지 예시를 업로드해 주실 수 있나요?
 집주인| 게시됨 2015. 4. 21. 오후 9:06:48 |
근원

ManualAssign.rar

180.66 KB, 다운로드 시간: 6, 다운로드 크레딧: -1 명성, -1 기여

 집주인| 게시됨 2015. 4. 21. 오후 9:07:00 |
샤오 자자 2015-4-21 16:50에 게시됨
압축된 패키지 예시를 업로드해 주실 수 있나요?

전송
게시됨 2015. 4. 22. 오전 8:31:39 |

알겠어요, 한번 볼게요
게시됨 2015. 4. 22. 오전 10:51:19 |

가져가서 고맙다고 말해요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com