2012-01-08 11 views

答えて

3

これは不可能です。動的にSQL文字列を作成する必要があります。

のC#:

string columnName = "xy"; 
string sql = "SELECT id AS " + columnName + " FROM table_name"; 

VB:

Dim columnName As String = "xy" 
Dim sql As String = "SELECT id AS " & columnName & " FROM table_name" 

ます。また、MySQLでストアドプロシージャであることを行うことができます。それはこのような何か(テストしていません)になりますSQL Syntax for Prepared Statements

用のMySQLのマニュアルを参照してください:この種の答えでは

CREATE PROCEDURE myProc (columnName VARCHAR(30)) 
BEGIN 
SET @sql = CONCAT("SELECT id AS ", columnName, " FROM table_name"); 
    PREPARE s1 FROM @sql; 
    EXECUTE s1; 
    DEALLOCATE PREPARE s1; 
END$$ 
+0

を、1はほとんどについてはあまり言うことを恐れてはならない[SQLインジェクション](HTTP: //en.wikipedia.org/wiki/SQL_injection)。少なくとも、それはその可能性のあるリスクに言及するために害を及ぼさない。 –

+2

カラム名がユーザによって入力されるのではなくプログラマによって定義される場合、SQLインジェクションは問題ではありません。後者の場合、名前の正当性を検証する必要があります。 –

関連する問題