私のプログラミングタスクでは、暗い路地を下りて、そうしなかったらよかったのにと思いましたが、今は後戻りすることはできません。
テーブル名、列名、ID値がクエリ文字列パラメータから取得されるSQLステートメントを作成しています。("SELECT [{0}] FROM [{1}] WHERE [Id] = {2};", c, t, id)
しかし、見た目ほど悪くはありません、私は保護されています:
- 認証されたユーザー(つまり、サインインしたユーザー)のみが実行できます
Page_Load
- テーブルと列の両方が事前に存在することを確認しています(使用
GetSchema
など) - Idが整数であることを事前に確認しています
- すべてのテーブルにId列があります
- データベース接続は適度に安全です
フィールド値はタイプNVARCHAR(4000)またはNVARCHAR(MAX)であると予想されるため、 LINQが好きなので、回避ExecuteScalar
し、LINQを試しています。ExecuteQuery
しかし、私は再び私の深さから少し外れています。
私はこれまでに持っています:
Dim db As New MyDataContext
Dim result = db.ExecuteQuery(Of ITable)("SELECT [{0}] FROM [{1}] WHERE [Id] = {2};", c, t, id)
- これは正しい方法ですか?
- 最初の行と最初の列の値を取得するにはどうすればよいですか?
- より良い代替案はありますか?
PSこれはSQLServer2005データベースです
助けていただければ幸いです。ありがとう。