【发布时间】:2013-03-13 13:49:24
【问题描述】:
我正在尝试使用该表的主键从数据库中获取数据。问题是每个表的主键名称会不同。
例如,用户可能想拉起员工表,主键是 Emp_ID。然后他们想调出制造商表,主键是 Manu_ID。
由于信息是在同一个 ViewModel 中提取的,所以一切都需要是动态的。
这是查看制造商表的 SQL 语句:
C#:
string strSQLconnection = (connectionString);
SqlConnection sqlConnection = new SqlConnection(strSQLconnection);
tableName = tableName + "AuditLogView";
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM @tableName WHERE ManufacturersID = @primarykey", sqlConnection);
sqlCommand.Parameters.AddWithValue("@tablename", tableName);
sqlCommand.Parameters.AddWithValue("@primarykey", primaryKeyID);
SqlDataReader reader = sqlCommand.ExecuteReader();
其中一些已经动态实现,例如来自用户的主键和表名。我想如果我总能在我的表中找到主键,那么它应该可以工作。有没有办法做到这一点?我正在使用 SQL Server 2008 R2。任何帮助表示赞赏。
【问题讨论】:
-
您使用的是哪个 DBMS?
-
是否需要考虑主键为多列的表?在许多数据库系统中,主键不必是单个列。
-
数据库对象(表、存储过程或任何其他对象)不能作为参数传递。只有列或变量的实际值才能作为参数。您需要动态构建 SQL 语句。
-
要获取一个表的PK,可以基于以下stackoverflow.com/questions/1373549/…
-
@EricLippert 我不需要考虑这一点。它们的设置都是一样的。
标签: c# sql sql-server-2008 select primary-key