通过sqlHelper访问数据库,查询数据
使用最简单的方式进行对数据库访问,并且查询返回需要的数据;如下步骤:
一、web.config 配置
<connectionStrings>
<add name="ABConnection" connectionString="Data Source=.;Initial Catalog=xx_Db;User ID=xx;Password=789xxxxxxx;" providerName="System.Data.SqlClient" />
<add name="AB2Connection" connectionString="Data Source=.;Initial Catalog=xxx_Db; User ID=sa;Password=789xxxxxxx;" providerName="System.Data.SqlClient" />
</connectionStrings>
二、Entity
namespace xx.Entity
{
public class Entity : DbContext
{
public virtual DbSet<User> Users { get; set; }
public ScrmEntity() : base("name=AB2Connection"){ }
}
}
三、Model User 的模型
四、sqlHelp 通过sql 获取数据库查询数据
public class sqlHelper
{
public static List<T> QueryList<T>(string sql, params SqlParameter[] para )
{
string connStr = ConfigurationManager.ConnectionStrings["AB2Connection"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.AddRange(para);
conn.Open();
var reader= comm.ExecuteReader();
List<T> DataList = new List<T>();
while (reader.Read())
{
T RowInstance = Activator.CreateInstance<T>();//动态创建数据实体对象
//通过反射取得对象所有的Property
foreach (PropertyInfo Property in typeof(T).GetProperties())
{
try
{
//取得当前数据库字段的顺序
int Ordinal = reader.GetOrdinal(Property.Name);
if (reader.GetValue(Ordinal) != DBNull.Value)
{
var ptype = Property.PropertyType;
var pvalue = reader.GetValue(Ordinal);
var ppvalue = Convert.ChangeType(pvalue, ptype);
//将DataReader读取出来的数据填充到对象实体的属性里
Property.SetValue(RowInstance, ppvalue, null);
}
}
catch
{
break;
}
}
DataList.Add(RowInstance);
}
return DataList;
}
五、xxController
string sql = "select Password from xxTable.Users where UserName=@loginId";
//构建参数
SqlParameter[] pms = new SqlParameter[]
{
new SqlParameter("@loginId",SqlDbType.VarChar,50){ Value =user.userName},
};
var hashPassword = sqlHelper.ExecuteScalar(sql, pms);
原文地址:https://www.cnblogs.com/llw1996/p/11405319.html
- 2020: [Usaco2010 Jan]Buying Feed, II
- 2102: [Usaco2010 Dec]The Trough Game
- 洛谷P3707 [SDOI2017]相关分析(线段树)
- Java计数器之CountDownLatch、CyclicBarrier、Semaphore
- 再看最短路算法 1 —— 单源最短路
- 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
- 1084: [SCOI2005]最大子矩阵
- 关于一般的并查集求根操作的一组对照研究
- vue计算属性详解——小白速会
- 【技巧】Java工程中的Debug信息分级输出接口及部署模式
- 1934: [Shoi2007]Vote 善意的投票
- 算法模板——线段树8 (字符串回文变换)
- 算法模板——哈希单模板字符串匹配
- javascript 原型及原型链详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mysqlbinlog命令详解 Part 3 - 查看十六进制格式内容
- MySQL information_schema详解 CHARACTER_SETS 表
- 彻底弄懂 Unicode 编码
- 两种使用代码获得SAP CRM product sales status的办法
- C#: "$"作用和用法
- SAP ABAP字符和字符串变量隐式转换的一些规则
- MySQL information_schema详解 COLLATION_CHARACTER_SET_APPLICABILITY
- 如何处理Angular项目在Visual Studio Code打开报关于@Decorators的警告信息
- QT 中普通数值与字符串之间的转换
- C# 时间与时间戳互转 13位
- 在C#中ref和out具体怎么使用?在什么情况下使用?
- Vs code 创建vue模版
- [892]python中re.split()方法
- MacOS抓包工具Charles
- PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)