Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> доступ к БД через SqlConnection 
V
    Опции темы
4ybaka
Дата 12.11.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



не знаю,может уже голова не варит,но никак не могу получить доступ к базам данных через SqlConnection smile 
есть подключение к sql серверу.получил имена всех баз,но вот как получить доступ к ним не понимаю.хотелось бы заполнить dataSet... 


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
thomas
Дата 12.11.2007, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



4ybaka, 
Приветствую.
Посмотри эту тему.
Там есть пример класса доступа у БД. Замени OleDb на Sql и все. В теме код как на VB так на C# (прокрути страничку)
А вообще в двух словах.
Создаешь соединение.
Создаешь команду.
Создаешь ДатаАдаптер.
Создаешь ДатаСет.
Открываешь соединение.
Выполняешь метод Fill ДатаАдаптера - он создает в ДатаСет таблицу и заполняет её данными, согласно sql-запроса (Select).
Чтобы увидеть что в этой таблице, заюзай DataGridView, задав его свойства
Код

DataGridView.DataSource = MyDataSet
DataGridView.DataMember = "myTable"



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
4ybaka
Дата 12.11.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



thomas, спасибо,но я похоже был прав по поводу головы)потому что задача заключалась в другом:
нужно получить список всех локальных серверов,а также все БД на каждом из них и таблицы в этих БД(везде нужны имена).получил только имена серверов.НО!там тоже проблема - выдается не полное имя сервера.так например если сервер b\sqlexpress то выдает только b!а по нему соединиться нелзья...
имена получал так:
Код

table = SmoApplication.EnumAvailableSqlServers();



--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
thomas
Дата 12.11.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



4ybaka, 
Приветствую.
Пока нашел как получить данные на структуру таблиц Базы Данных.
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Oef09_dbBis_
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnShow_Click(object sender, EventArgs e)
        {
            string tblname;
            string sql;
            string constr = @"provider=Microsoft.Jet.oledb.4.0;" +
                            @"data source=D:\vti\Margo\nwind.mdb";

            OleDbConnection con = new OleDbConnection(constr);
            con.Open();

            DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                               new object[] { null, null, null, "table" }); //view=query
            //katolog, schema, kategorie, sm nizhe
            //mozhet byt "table", "view", "system table", 

            DataSet ds = new DataSet();

            foreach (DataRow dr in dt.Rows)
            {
                lstbSchema.Items.Clear();
                tblname = dr["Table_name"].ToString();
                sql = "select * from [" + tblname+"]"; // обратить внимание на нотацию, иначе SQL не поймет
                OleDbDataAdapter da = new OleDbDataAdapter(sql, con);
                da.Fill(ds, tblname);
               
                    foreach (DataColumn dc in ds.Tables[tblname].Columns)
                    {
                        lstbSchema.Items.Add(dc.ToString() +
                            ", " + dc.ColumnName +
                            ", " + dc.DataType +
                            ", " + dc.Caption +
                            ", " + dc.DefaultValue + "!");
                    }
                    MessageBox.Show("volgende"); // следующая таблица в БД
            }
            con.Close();
        }
    }
}

Здесь показано как через OleDb работать с базой Access, но с Sql также. Замени OleDb на Sql и поменяй connectionString


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
4ybaka
Дата 12.11.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



Цитата(thomas @  12.11.2007,  21:26 Найти цитируемый пост)
DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" }); 

у SqlConnection такого метода нет.есть просто GetSchema,кот я с параметром "Databases" и вызывал,но вот если попробовать вызвать как GetSchema("Tables") то эффекта никакого...

Это сообщение отредактировал(а) 4ybaka - 12.11.2007, 22:03


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
1stain
Дата 12.11.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 5
Всего: 40





--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
4ybaka
Дата 12.11.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



1stain, спасибо,как раз только что решил проблему именно этим способомsmile


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
1stain
Дата 12.11.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 5
Всего: 40



не за что.
йа тут поковырялся и нагуглил еще один метод - через реестр
сцылко

Это сообщение отредактировал(а) 1stain - 12.11.2007, 23:13

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  WindowsApplication1.rar 35,95 Kb


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.