什麼是創建一個SQL Server表的架構一個空DataTable對象的最佳方式?需要獲得空數據表中的.NET與數據庫表模式
15
A
回答
10
,我認爲是值得一提的一個說法是SET FMTONLY:
SET FMTONLY ON;
SELECT * FROM SomeTable
SET FMTONLY OFF;
沒有行被處理或當SET FMTONLY爲ON發送到客戶端,因爲請求。
這可以得心應手的原因是因爲你可以提供任何查詢/存儲過程並返回結果集的不僅僅是元數據。
4
假設你可以連接到其中包含你想在你想要做這點它的時間來複製表中的SQL數據庫,你可以使用一個傳統的ResultSet數據錶轉換,使用
select * from <tablename> where 1=2
作爲源查詢。
這將返回一個空結果與源表的結構設置。
9
嘗試: SELECT TOP 0 * FROM [TableName]
和使用的SqlDataAdapter填充DataSet,然後從該數據集獲得的表。
-1
你總是可以創建自己:
DataTable table = new DataTable("TableName");
table.Columns.Add(new DataColumn("Col1", typeof(int)));
table.Columns.Add(new DataColumn("Col2", typeof(int)));
table.Columns.Add(new DataColumn("Col3", typeof(string)));
table.Columns.Add(new DataColumn("Col4", typeof(int)));
table.Columns.Add(new DataColumn("Col5", typeof(string)));
明顯的拉回是,你將不得不更新你的代碼,只要數據庫模式的變化。
2
這裏就是我所做的:
var conn = new SqlConnection("someConnString");
var cmd = new SqlCommand("SET FMTONLY ON; SELECT * FROM MyTable; SET FMTONLY OFF;",conn);
var dt = new DataTable();
conn.Open();
dt.Load(cmd.ExecuteReader());
conn.Dispose();
效果很好。感謝AdaTheDev。
0
這個工程:
Class BlankTableWithSourceTableSchema
Inherits DataTable
Public Sub New(ByVal connstr As String, ByVal sourcetable As String)
Try
Using connection As SqlServerCe.SqlCeConnection = New SqlServerCe.SqlCeConnection(connstr)
Dim adapter As SqlServerCe.SqlCeDataAdapter = New SqlServerCe.SqlCeDataAdapter("SELECT * FROM " & sourcetable, connection)
adapter.TableMappings.Add("Table", "ABlankTable")
adapter.FillSchema(Me, SchemaType.Mapped)
End Using
Catch ex As Exception
End Try
End Sub
End Class
1
Class BlankTableWithSourceTableSchema
Inherits DataTable
Public Sub New(ByVal connstr As String, ByVal sourcetable As String)
Try
Using connection As SqlServerCe.SqlCeConnection = New SqlServerCe.SqlCeConnection(connstr)
Dim adapter As SqlServerCe.SqlCeDataAdapter = New SqlServerCe.SqlCeDataAdapter("SELECT * FROM " & sourcetable, connection)
adapter.TableMappings.Add("Table", "ABlankTable")
adapter.FillSchema(Me, SchemaType.Mapped)
End Using
Catch ex As Exception
End Try
End Sub
End Class
11
所有這些解決方案是正確的,但如果你想被簡化爲這種情況一個純代碼的解決方案。
沒有數據在該溶液返回由於在的ExecuteReader函數指定CommandBehavior.SchemaOnly(Command Behavior Documentation)
的CommandBehavior.SchemaOnly溶液將添加SET FMTONLY ON;查詢之前,SQL是你執行的話,它讓你的代碼乾淨。
public static DataTable GetDataTableSchemaFromTable(string tableName, SqlConnection sqlConn, SqlTransaction transaction)
{
DataTable dtResult = new DataTable();
using (SqlCommand command = sqlConn.CreateCommand())
{
command.CommandText = String.Format("SELECT TOP 1 * FROM {0}", tableName);
command.CommandType = CommandType.Text;
if (transaction != null)
{
command.Transaction = transaction;
}
SqlDataReader reader = command.ExecuteReader(CommandBehavior.SchemaOnly);
dtResult.Load(reader);
}
return dtResult;
}
相關問題
- 1. 需要與數據庫表設計
- 2. 需要從數據庫表中獲得最大值
- 3. 數據庫表獲得太多的數據 - 需要另一種解決方案
- 4. 數據庫模式vs數據庫表空間?
- 5. 需要MySQL數據庫manupilation PHP正則表達式模式
- 6. 需要從mysql數據庫中獲得產品數據
- 7. 空表ListView與多表SQLite數據庫
- 8. 在c#數據表中顯示數據庫表數據,但數據表爲空
- 9. 需要插入數據庫表
- 10. Apache Shiro需要哪些數據庫表?
- 11. InnoDB數據庫表需要51秒
- 12. 需要更新數據庫表自動
- 13. CakePHP需要一個數據庫表
- 14. 從數據庫中獲得數據,圖表的Android
- 15. 數據庫模式,1表或2表
- 16. 獲得與數據庫
- 17. Symfony2在數據庫表中存儲數據庫模式信息
- 18. 要從必需的JSON格式列表中獲取數據
- 19. .net加密數據庫表
- 20. 需要與獲得來自多個表中的數據相同外鍵
- 21. 需要幫助提交我的表單數據到數據庫
- 22. 從數據庫表中獲取數據
- 23. 需要從wordpress數據庫獲得產品數據和類別數據
- 24. 需要數據庫
- 25. 需要從數據表
- 26. 不能從LINQ表達式的數據庫中獲取數據
- 27. 從mysql數據庫中獲取不需要的數據? (php)
- 28. 與數據表jQuery庫的問題,我需要過濾
- 29. 數據庫模式不同步 - 需要更新數據而不丟失數據
- 30. 神奇的對象數據庫需要與.Net綁定
喜歡這個,可以跨所有數據庫;) – AsG