在我的编程任务中,我走上了一条黑暗的小巷,但愿我没有,但现在没有回头路了。
我正在构建一个 SQL 语句,其中从查询字符串参数中检索表名、列名和 id 值,即("SELECT [{0}] FROM [{1}] WHERE [Id] = {2};", c, t, id)
但它并不像看起来那么糟糕,我受到保护:
- 只有经过身份验证的用户(即登录用户)才能执行
Page_Load
- 我正在检查表和列是否都存在(使用
GetSchema
等) - 我正在检查 Id 是否是一个整数
- 我所有的表都有 Id 列
- 数据库连接相当安全
字段值应为 NVARCHAR(4000) 或 NVARCHAR(MAX) 类型,因此我避免使用ExecuteScalar
LINQ ExecuteQuery
,因为我喜欢 LINQ。但我又有点超出我的深度了。
我已经做到了这一点:
Dim db As New MyDataContext
Dim result = db.ExecuteQuery(Of ITable)("SELECT [{0}] FROM [{1}] WHERE [Id] = {2};", c, t, id)
- 这是正确的方法吗?
- 如何获得第一行和第一列的值?
- 有更好的选择吗?
PS 这是一个 SQL Server 2005 数据库
任何帮助表示赞赏。谢谢。