Chcę uzyskać nazwę całej tabeli bazy danych SQL Server w mojej aplikacji C#. Czy to możliwe? Plz powiedz mi Rozwiązanie.Czy mogę uzyskać nazwę wszystkich tabel bazy danych SQL Server w aplikacji C#?
Odpowiedz
Jest to tak proste, jak to:
DataTable t = _conn.GetSchema("Tables");
gdzie _conn
jest obiektem SqlConnection który został już podłączony do poprawnej bazy danych.
wykonać polecenie SQL dla:
SELECT name FROM sysobjects WHERE xtype = 'U'
Zobacz How to get a list of SQL Server databases na jeden sposób:
System.Data.SqlClient.SqlConnection SqlCon = new System.Data.SqlClient.SqlConnection("server=192.168.0.1;uid=sa;pwd=1234");
SqlCon.Open();
System.Data.SqlClient.SqlCommand SqlCom = new System.Data.SqlClient.SqlCommand();
SqlCom.Connection = SqlCon;
SqlCom.CommandType = CommandType.StoredProcedure;
SqlCom.CommandText = "sp_databases";
System.Data.SqlClient.SqlDataReader SqlDR;
SqlDR = SqlCom.ExecuteReader();
while(SqlDR.Read())
{
MessageBox.Show(SqlDR.GetString(0));
}
Nie trzeba nawet przechowywanej proc :) – slugster
To baz danych, a nie tabele zapytał prawo ? –
Jeśli chcesz uzyskać wszystkie nazwy tabel z bazy danych, możesz zrobić coś takiego;
string[] GetAllTables(SqlConnection connection)
{
List<string> result = new List<string>();
SqlCommand cmd = new SqlCommand("SELECT name FROM sys.Tables", connection);
System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
result.Add(reader["name"].ToString());
return result.ToArray();
}
Get wszystkich baz danych przy użyciu innej odpowiedzi i utworzenie połączenia do siebie i korzystać z funkcji „GetAllTables”, aby uzyskać wszystkie nazwy tabel z tego db.
Twój kod działa. Tęskniłeś, aby otworzyć i zamknąć połączenie. –
Tylko inne rozwiązanie:
public IList<string> ListTables()
{
List<string> tables = new List<string>();
DataTable dt = _connection.GetSchema("Tables");
foreach (DataRow row in dt.Rows)
{
string tablename = (string)row[2];
tables.Add(tablename);
}
return tables;
}
czy widzisz odpowiedź na pytanie? –
'(ciąg) wiersz [2];' pomógł mi. dzięki. –
Innym sposobem, ale warto wspomnieć: API zawarte w Microsoft.SqlServer.Smo.dll czyni go bardzo do dostępu do bazy danych:
private IEnumerable<string> getAllTables()
{
var sqlConnection = new System.Data.SqlClient.SqlConnection(connectionString);
var serverConnection = new Microsoft.SqlServer.Management.Common.ServerConnection(sqlConnection);
var server = new Microsoft.SqlServer.Management.Smo.Server(serverConnection);
var database = server.Databases[databaseName];
foreach (Microsoft.SqlServer.Management.Smo.Table table in database.Tables)
{
yield return table.Name;
}
}
Najfajniejsze jest to, że obiekt Microsoft.SqlServer.Management.Smo.Table umożliwia wykonywanie różnych operacji, takich jak zmiana schematu, wykonywanie skryptów itp.
Moja wersja odpowiedzi yonexbat
public System.Collections.Generic.Dictionary<string, string> GetAllTables(System.Data.SqlClient.SqlConnection _connection)
{
if (_connection.State == System.Data.ConnectionState.Closed)
_connection.Open();
System.Data.DataTable dt = _connection.GetSchema("Tables");
System.Collections.Generic.Dictionary<string, string> tables = new System.Collections.Generic.Dictionary<string, string>();
foreach (System.Data.DataRow row in dt.Rows)
{
if (row[3].ToString().Equals("BASE TABLE", StringComparison.OrdinalIgnoreCase)) //ignore views
{
string tableName = row[2].ToString();
string schema = row[1].ToString();
tables.Add(tableName, schema);
}
}
_connection.Close();
return tables;
}
Dzięki Slugster na jego odpowiedź. Oto rozszerzone wyjaśnienie, jak wyświetlić listę tabel w bazie danych.
w formie asp.net dodać następujące:
<div>
<asp:Button ID="GridViewTableListButton" runat="server" Text="List all Tables on server"
onclick="GridViewTableListButton_Click" />
<asp:GridView ID="GridViewTableList" runat="server">
</asp:GridView>
</div>
następnie w kod C# za dodać następującą funkcję:
protected void GridViewTableListButton_Click(object sender, EventArgs e)
{
objConn.Open();
DataTable t = objConn.GetSchema("Tables");
GridViewTableList.DataSource = t;
GridViewTableList.DataBind();
objConn.Close();
}
nie zapominając dodać
using System.Data;
i
SqlConnection objConn = new SqlConnection();
u góry strony/wewnątrz klasy nadrzędnej.
Z wewnątrz Page_Load:
objConn.ConnectionString = ConfigurationManager.ConnectionStrings[connString].ConnectionString;
connString jest plik klasy (tzw connectionClass.cs), które są przechowywane w folderze App_Code
public class connectionClass
{
.....
public string connClass()
{
connString = "LocalSqlServer"; // LOCAL home PC Version
}
}
wreszcie w internecie.config
<add name="LocalSqlServer" connectionString="Data Source=MyPCsName\SQLEXPRESS;Initial Catalog=databasename;Integrated Security=True" providerName="System.Data.SqlClient"/>
np
Używam tego ExtensionMethod
dla SqlConnection
:
public static List<string> GetTableNames(this SqlConnection connection)
{
using(SqlConnection conn = connection)
{
if(conn.State == ConnectionState.Open)
{
return conn.GetSchema("Tables").AsEnumerable().Select(s => s[2].ToString()).ToList();
}
}
//Add some error-handling instead !
return new List<string>();
}
- 1. Role bazy danych SQL Server
- 2. Jak uzyskać listę wszystkich tabel w dwóch różnych bazach danych
- 3. Zaznacz wszystkie kolumny ze wszystkich tabel w SQL Server 2008
- 4. Lista wszystkich tabel w bazie danych
- 5. Fill DataTable z bazy danych SQL Server
- 6. Czy istnieje sposób, aby uzyskać listę wszystkich bieżących tabel tymczasowych w SQL Server?
- 7. Drzewo wszystkich zależności w bazie danych SQL Server
- 8. Skryptuj całą bazę danych SQL-Server
- 9. Wybierz rozmiar bazy danych SQL Server
- 10. Zmiana sortowania SQL Server 2012 bazy danych
- 11. Najlepszy sposób na synchronizację zdalnej bazy danych SQL Server z lokalną bazą danych SQL Server Compact?
- 12. Jak mogę słuchać do bazy danych SQL Server zmienia
- 13. Podłączanie do lokalnej bazy danych SQL Server za pomocą C#
- 14. Kodowanie kolorami Bazy danych SQL Server 2008
- 15. wygenerować skrypt DDL z bazy danych SQL Server
- 16. Jak zmienić właściciela bazy danych SQL Server?
- 17. Czy istnieje standardowa praktyka synchronizacji tabel SQL Server?
- 18. Porównanie bibliotek bazy danych SQL C++
- 19. Zmiana nazwy bazy danych SQL
- 20. Zmień nazwę pliku danych bazy danych w programie SQL Server 2005
- 21. Zakres tabel tymczasowych w SQL Server
- 22. Jak mogę uzyskać nazwę źródła danych aplikacji w Coldfusion 10?
- 23. Kreator publikacji bazy danych SQL z SQL Server 2008
- 24. Jak wybrać sortowanie bazy danych SQL Server
- 25. Jak korzystać z projektu bazy danych SQL Server
- 26. Jak uzyskać nazwę bazy danych sqlserver
- 27. Reset SQL Server Tożsamość Przyrost dla wszystkich tabel
- 28. Lista wszystkich tabel w bazie danych
- 29. Wyświetlanie wszystkich tabel w bazie danych
- 30. Ustaw nazwę bazy danych dynamicznie w LINQ na SQL
Zaletą tej metody w porównaniu z metodami opartymi na zapytaniach jest uzyskanie metadanych dotyczących tabel w tabeli DataTable, co nie jest proste przy użyciu zapytań. (Ale właśnie zdałem sobie sprawę, że potrzebujesz tylko imion :)) – apoorv020