के साथ .NET में खाली डेटाटेबल प्राप्त करने की आवश्यकता है SQL सर्वर तालिका की स्कीमा के साथ खाली डेटाटेबल ऑब्जेक्ट बनाने का सबसे अच्छा तरीका क्या है?डेटाबेस तालिका स्कीमा
उत्तर
एक बयान मुझे लगता है कि उल्लेख के लायक है SET FMTONLY है:
SET FMTONLY ON;
SELECT * FROM SomeTable
SET FMTONLY OFF;
कोई पंक्ति संसाधित या जब सेट FMTONLY चालू है, क्योंकि अनुरोध के ग्राहक के लिए भेजा जाता है।
कारण यह आसान हो सकता है क्योंकि आप किसी भी क्वेरी/संग्रहीत प्रक्रिया की आपूर्ति कर सकते हैं और परिणामसेट के मेटाडेटा को वापस कर सकते हैं।
यह मानते हुए कि आप SQL डेटाबेस जो तालिका आप बिंदु यह समय आप ऐसा करना चाहते हैं पर कॉपी करना चाहते हैं से कनेक्ट कर सकते हैं, तो आप datatable रूपांतरण के लिए एक पारंपरिक resultset इस्तेमाल कर सकते हैं, का उपयोग कर
select * from <tablename> where 1=2
आपकी स्रोत क्वेरी के रूप में।
यह स्रोत तालिका की संरचना के साथ एक खाली परिणाम सेट वापस कर देगा।
प्रयास करें: SELECT TOP 0 * FROM [TableName]
और SqlDataAdapter का प्रयोग कर एक डेटासेट को भरने, तो वह डेटासेट से तालिका प्राप्त करने के लिए।
तुम हमेशा अपना खुद का बना सकते हैं:
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)));
स्पष्ट किया जा रहा है आप अपने कोड को अद्यतन करने के लिए जब भी डेटाबेस स्कीमा परिवर्तन होगा कि वापस आकर्षित। अच्छी तरह से
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।
इस काम करता है:
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
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
इन समाधानों में से सभी सही हैं, लेकिन आप एक शुद्ध कोड समाधान है कि इस स्थिति के लिए सुव्यवस्थित है चाहते हैं।
कोई डेटा इस समाधान में दिया जाता है के बाद से CommandBehavior.SchemaOnly ExecuteReader समारोह पर निर्दिष्ट किया जाता है (Command Behavior Documentation)
CommandBehavior.SchemaOnly समाधान सेट FMTONLY पर जोड़ देगा; एसक्यूएल आपके लिए क्वेरी निष्पादित होने से पहले, यह आपके कोड को साफ रखता है।
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. डेटाबेस स्कीमा/कैटलॉग
- 5. ईथरपैड डेटाबेस स्कीमा?
- 6. Decipher डेटाबेस स्कीमा
- 7. एक मानक डेटाबेस स्कीमा
- 8. एंड्रॉइड स्क्लाइट डेटाबेस स्कीमा
- 9. डेटाबेस स्कीमा अपडेट
- 10. एचआर-एक्सएमएल डेटाबेस स्कीमा
- 11. अद्यतन डेटाबेस स्कीमा
- 12. MySQL डेटाबेस स्कीमा
- 13. एक रिलेशनल डेटाबेस स्कीमा
- 14. NHibernate स्कीमा पीढ़ी के साथ डेटाबेस तालिका स्कीमा कैसे अपडेट करें?
- 15. सरल डेटाबेस ईआर आरेख/स्कीमा
- 16. डेटाबेस स्कीमा डिज़ाइन टूल/मॉड्यूलर डेटाबेस डिज़ाइन
- 17. डेटाबेस तालिका
- 18. डेटाबेस तालिका
- 19. ऐप जो डेटाबेस तालिका
- 20. ऑब्जेक्ट 'पता', डेटाबेस 'CNET_85731', स्कीमा 'डीबीओ'
- 21. मोंगोस: सुझाए गए डेटाबेस स्कीमा
- 22. Django: अद्यतन डेटाबेस स्कीमा डेटा
- 23. विज़ुअल मैपिंग MySQL डेटाबेस स्कीमा
- 24. डेटाबेस स्थान बदलना स्वामी स्कीमा
- 25. पदानुक्रमित समूहों के लिए डेटाबेस स्कीमा
- 26. डाटाबेस विफल - डेटाबेस स्कीमा वर्तमान मैपिंग फ़ाइल
- 27. स्कीमा
- 28. डेटाबेस तालिका मान
- 29. एक डेटाबेस तालिका
- 30. 'tail -f' डेटाबेस तालिका
यह प्यार करता है, सभी डेटाबेस में काम करता है;) – AsG