2017-02-26 10 views
0

どこが間違っているのか分かりません。 テーブルを持つ基本的なSELECTです。 エラーメッセージに関して、私はパラメータセクションで@tableName変数を宣言していると思いましたか?SqlAdapterを使用しているエラー '{"テーブル変数" @ tableName "を宣言していなければなりません" "'

SqlDataAdapter adapter = new SqlDataAdapter(
           "SELECT * FROM @tableName",con); 

         adapter.SelectCommand.Parameters.Add(new SqlParameter 
         { 
          ParameterName = "@tableName", 
          Value = tableName, 
          SqlDbType = SqlDbType.NVarChar 
         });        
         adapter.Fill(databaseList); 

答えて

1

From句はそう表現できない、これはSQLインジェクションです。この

SqlDataAdapter adapter = new SqlDataAdapter(string.Format("Select * From {0}", "yourTableName"), con); 
+0

を試してみて、パラメータに

を送る傾けます。名前は適切に*引用する必要があります。 –

+0

はい、これはSQLインジェクションですが、ネイティブSqlQueryへの任意の方法ですか?たぶんdbからテーブル名が存在するかどうかチェックしてください。 @RemusRusanu –

+0

https://msdn.microsoft.com/en-us/library/ms176114.aspx –

2

あなたは、パラメータとして選択するために、テーブルにを渡すことはできません。適切に引用された(エスケープされた)テーブル名をSQL文字列に挿入することにより、SQLを動的に構築します。

関連する問題