C# 从Information.schema columns返回列名,然后使用该列查找其中的数据
我有一个问题,即我从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来
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);