Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Information.schema columns返回列名,然后使用该列查找其中的数据_C#_Sql_Information Schema - Fatal编程技术网

C# 从Information.schema columns返回列名,然后使用该列查找其中的数据

C# 从Information.schema columns返回列名,然后使用该列查找其中的数据,c#,sql,information-schema,C#,Sql,Information Schema,我有一个问题,即我从INFORMATION_SCHEMA.columns中查找列名 daISC = new SqlDataAdapter( string.Format( "SELECT column_name FROM INFORMATION_SCHEMA.columns WHERE table_name = 'DynamicDataSubjects' AND ordinal_position = 20" ), cn); 然后我想使用column\u name来

我有一个问题,即我从INFORMATION_SCHEMA.columns中查找列名

daISC = new SqlDataAdapter(
    string.Format(
        "SELECT column_name FROM INFORMATION_SCHEMA.columns WHERE table_name = 'DynamicDataSubjects' AND ordinal_position = 20"
    ), cn);
然后我想使用
column\u name
来查找其中的数据值

string sColumnName = row2["column_name"].ToString();

daDDS = new SqlDataAdapter(
    string.Format(
        "SELECT '{0}' FROM DynamicDataSubjects WHERE pupil_id = {1} AND interim_id = {2}",
        sColumnName, iPupilID, iInterimID
    ), cn);
不幸的是,这会引发一个错误,因为
sColumnName
被视为文本并返回自身。没有
“{0}”
会引发异常


希望有人能理解我想说的话,并为我指出正确的方向。

删除
{0}
周围的单引号,它应该会起作用。SQL将单引号内的字符视为字符串文字。为确保列名的分隔正确,例如,如果列名包含空格,请使用双引号将其括起来,例如:

“{0}”

因此:


只需替换'{0}'周围的单引号即可。。。带方括号的[{0}]

daDDS=newsqldataadapter(string.Format(“从DynamicDataSubjects中选择[{0}],其中瞳孔id={1}和中间id={2}”,scolumname,iPupilID,iInterimID),cn)

这样,sColumnName将被解释为标识符,而不是文本。您也可以省略方括号,但这可能会导致列名中的特殊字符出现问题

daDDS = new SqlDataAdapter(string.Format("SELECT \"{0}\" FROM DynamicDataSubjects WHERE pupil_id = {1} AND interim_id = {2}", sColumnName, iPupilID, iInterimID), cn);