如何使用SQL参数从SQL Server获取数据集
技术问答
219 人阅读
|
0 人回复
|
2023-09-14
|
我正在从事C#项目,不熟悉这项技术。* \ r3 M5 |/ y0 k* N$ r
我想从SQL Server 在2008年读取一些数据,并编写以下代码
+ q3 I7 P2 f: c7 j% v+ P0 tcon); User user = new User(); DataRow dr; try da.Fill(ds); dr = ds.Tables[0].Rows[0]user.Id = Convert.ToInt16(dr["userID"]); user.FirstName = (string)dr["firstName"]; user.LastName = (string)dr["lastName"]; user.Email = (string)dr["email"]; user.Username = (string)dr["userName"]; user.Password = (string)dr["password"]; user.type = (string)dr["type"]; return user; } catch (Exception ex) return null; end of select methodcon); User user = new User(); DataRow dr; try { da.Fill(ds); dr = ds.Tables[0].Rows[0]; user.Id = Convert.ToInt16(dr["userID"]); user.FirstName = (string)dr["firstName"]; user.LastName = (string)dr["lastName"]; user.Email = (string)dr["email"]; user.Username = (string)dr["userName"]; user.Password = (string)dr["password"]; user.type = (string)dr["type"]; return user; } catch (Exception ex) { return null; }}//end of select method但是我读过一篇文章SQL注入文章,我想用SQL为了避免这种情况,我不知道该怎么办。
/ z( b- I1 U3 l3 j, F# k
' ^9 y! {; k! b 解决方案: 4 Z( Q# Y5 e, _' y1 m
这是对代码的简单重做。未经测试,但本质上包括在一次性对象周围添加using使用参数集合的语句和语句SqlCommand' i% _8 [0 l, \. l2 ^1 l$ g: @
password); using(SqlDataAdapter da = new SqlDataAdapter(cmd)) User user = new User();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DataRow dr; da.Fill(ds); dr = ds.Tables[0].Rows[0]user.Id = Convert.ToInt16(dr["userID"]); user.FirstName = (string)dr["firstName"]; user.LastName = (string)dr["lastName"]; user.Email = (string)dr["email"]; user.Username = (string)dr["userName"]; user.Password = (string)dr["password"]; user.type = (string)dr["type"]; return user; password); using(SqlDataAdapter da = new SqlDataAdapter(cmd)) { User user = new User(); DataRow dr; da.Fill(ds); dr = ds.Tables[0].Rows[0]; user.Id = Convert.ToInt16(dr["userID"]); user.FirstName = (string)dr["firstName"]; user.LastName = (string)dr["lastName"]; user.Email = (string)dr["email"]; user.Username = (string)dr["userName"]; user.Password = (string)dr["password"]; user.type = (string)dr["type"]; return user; }}注意命令文本如何不直接包含用户和密码符串,而是一个简单的参数占位符(@uname and@pwd)。添加参数SqlCommand这些占位符称为参数名称。4 @6 x' E3 P% [" C5 w- v, K3 i. g
在查看检索到的数据的用途时,我强烈建议您查看简单的数据ORM工具(例如Dapper),该工具可直接转换User对象中所有这些代码 |
|
|
|
|
|