Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Microsoft.SqlServer.Management.Smo


Автор: 4ybaka 15.11.2007, 22:39
есть Microsoft.SqlServer.Management.Smo.Server server, через который нужно заполнить объект типа DataTable (из определенной таблицы),а точнее просто перегнать в DataGridView.подскажите,как это можно реализовать?готового метода не нашел.в ручную тоже не получается (не могу добыть строки из server.Tables[])

Автор: 1stain 16.11.2007, 00:49
Код

            Server server = new Server(@".\MSSQL2005"); // выставь имя своего сервера
            Database db = server.Databases["Northwind"];
            DataSet ds = db.ExecuteWithResults("SELECT * FROM dbo.CUSTOMERS");
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = ds.Tables[0];

у Server нет свойства Tables, зато оно есть у Database, которые "лежат" в коллекции DatabaseCollection

Автор: 4ybaka 16.11.2007, 01:03
то что доктор прописал  smile 

Автор: 4ybaka 17.11.2007, 01:20
появился еще один вопрос - как получить связи между таблицами?

Автор: 1stain 17.11.2007, 11:45
4ybaka, у тебя MSDN есть?
http://msdn2.microsoft.com/en-us/library/ms162160.aspx

Автор: 4ybaka 18.11.2007, 01:39
вроде чуток разобрался,но всеравно есть вопросы.вот например часть из рез-ов того примера:
Код

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[Employees](
    [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
    [LastName] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [FirstName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Title] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [TitleOfCourtesy] [nvarchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [BirthDate] [datetime] NULL,
    [HireDate] [datetime] NULL,
    [Address] [nvarchar](60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [City] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Region] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [PostalCode] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Country] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [HomePhone] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Extension] [nvarchar](4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Photo] [image] NULL,
    [Notes] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ReportsTo] [int] NULL,
    [PhotoPath] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[Customers](
    [CustomerID] [nchar](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [CompanyName] [nvarchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [ContactName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ContactTitle] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Address] [nvarchar](60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [City] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Region] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [PostalCode] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Country] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Phone] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Fax] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[Shippers](
    [ShipperID] [int] IDENTITY(1,1) NOT NULL,
    [CompanyName] [nvarchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Phone] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[Orders](
    [OrderID] [int] IDENTITY(1,1) NOT NULL,
    [CustomerID] [nchar](5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [EmployeeID] [int] NULL,
    [OrderDate] [datetime] NULL,
    [RequiredDate] [datetime] NULL,
    [ShippedDate] [datetime] NULL,
    [ShipVia] [int] NULL,
    [Freight] [money] NULL,
    [ShipName] [nvarchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ShipAddress] [nvarchar](60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ShipCity] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ShipRegion] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ShipPostalCode] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [ShipCountry] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

после проверки выяснилось,что здесь нижняя таблица зависит от всех перечисленных выше.но как узнать по каким полям?
там где есть IDENTITY(1,1) почти понятно.но почему в Employees IDENTITY есть, а в Customers нет?из-за типа поля?выходит их нужно просто сопоставлять по названиям столбцов?мне кажется это нерационально и вообще не правильно...
и в Orders нет ни одного столбца из Shippers.как их тогда сопоставлять?

ЗЫ:может это излишне и есть какойто более простой метод?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)