如何根据Sql中的其他表值动态添加数据库表列

时间:2014-09-03 04:57:51

标签: c# sql winforms

CREATE PROCEDURE sproc_BuildTable 
          @TableName NVARCHAR(128)
          ,@Column1Name NVARCHAR(32)
          ,@Column1DataType NVARCHAR(32)
          ,@Column1Nullable NVARCHAR(32)
   AS

   DECLARE @SQLString NVARCHAR(MAX)
   SET @SQLString = 'CREATE TABLE '+@TableName + '( '+@Column1Name+' '
   +@Column1DataType +' '+@Column1Nullable +') ON PRIMARY '

   EXEC (@SQLString)

   GO

我想创建一个新表,需要根据其他数据库列值动态添加表列名

1 个答案:

答案 0 :(得分:1)

你想在SQL中实现它吗?如果是,那么您可以使用:

select * into newtable from oldtable

这将使用旧表名和数据创建一个新表(重复)。

如果您想要表格的所有列,您可以使用

sp_help tableName

作为您的sql查询,它将返回所有详细信息。

和 如果您想使用c#代码执行此操作,可以获得上面的列名称

SqlDataAdapter adapter = new SqlDataAdapter(sqlquery, ConnectionString);    
DataTable table = new DataTable();
adapter.Fill(table);
string columnName =  table.Columns[desiredColumnIndex].ColumnName;

它将返回列名,您可以在其他sqlquery中使用它来创建新表。在您的情况下,如果您的结果返回单个列,您将传递0作为索引。