我需要以編程方式在C#中創建SQL Server 2008表,以便應該從列列生成表的列(每列名稱是表中的一行的名稱)以編程方式創建SQL Server表
我的問題是什麼是通過列的列表命令字符串循環,並創建記錄表的:
List<string> columnsName = ["col1","col2","col3"]
我想創建一個表,在columnsName
列。但由於列表大小不是常量,我需要遍歷列表以生成表列。
我需要以編程方式在C#中創建SQL Server 2008表,以便應該從列列生成表的列(每列名稱是表中的一行的名稱)以編程方式創建SQL Server表
我的問題是什麼是通過列的列表命令字符串循環,並創建記錄表的:
List<string> columnsName = ["col1","col2","col3"]
我想創建一個表,在columnsName
列。但由於列表大小不是常量,我需要遍歷列表以生成表列。
簡單的答案是
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
在C#中使用string builder來連接查詢,然後執行查詢。
StringBuilder query = new StringBuilder();
query.Append("CREATE TABLE ");
query.Append(tableName);
query.Append(" (");
for (int i = 0; i < columnNames.Length; i++)
{
query.Append(columnNames[i]);
query.Append(" ");
query.Append(columnTypes[i]);
query.Append(", ");
}
if (columnNames.Length > 1) { query.Length -= 2; } //Remove trailing ", "
query.Append(")");
SqlCommand sqlQuery = new SqlCommand(query.ToString(), sqlConn);
SqlDataReader reader = sqlQuery.ExecuteReader();
注意:tableName,columnNames和columnTypes將替換爲您從中獲取數據的內容。從您的描述中,您聽起來像是從查詢中獲得列值,所以不是使用for循環和數組,而是使用while循環遍歷結果來構建查詢。讓我知道如果你需要一個使用這種方法的例子,我今晚會做一個。
如果您在創建表的語法時遇到問題,可以嘗試在MS SQL Server Management Studio中創建表(或示例表),然後右鍵單擊表並選擇腳本表作爲\ Create To \ New查詢編輯器窗口。這會向您顯示它將用於構建查詢的腳本。
您是否正在尋找像實體屬性值模型一樣的東西?
http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
0_o我不知道任何行有名字的RDBMS。在我知道的每個RDBMS中,列都有名字... – 2012-04-05 18:13:50
歡迎來到StackOverflow。當你詢問廣泛變化的東西時(比如對特定SQL語法的支持),你應該提供一個更具體的標籤和通用標籤。在這種情況下,由於DBMS在其SQL語法中差異很大,因此瞭解您正在使用的數據庫(MySQL,SQL Server等)非常重要。有些甚至不允許使用SQL(DDML)語句創建數據庫。請編輯您的問題以添加您正在使用的數據庫引擎的標記,因爲提供涵蓋所有數據庫的答案相當困難。謝謝。 :) – 2012-04-05 18:18:10
您可以從'DataTable'的列中生成一個SQL表。這有什麼好處? – MoonKnight 2012-04-05 18:18:30