Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443

Проверка существования БД на сервере SQL

27.10.2012, 21:40. Показов 8982. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, форумчане. Пишу клиента на vb.net 2010 для работы с MS SQL Server 2008 R2. В определенный момент, по нажатию кнопки должна создаваться сама база данных. Здесь проблема - как проверить, что БД с таким именем нет на нужном мне экземпляре SQL? Если с процедурой создания БД, таблиц, индексов и ключей еще какая-то инфа есть в сети и разобраться можно, то с проверкой совсем уныло... Заранее благодарю за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2012, 21:40
Ответы с готовыми решениями:

Проверка существования файла на сервере (сайте)
Есть сайт, например сайт.ru в корневом разделе сайта расположен файл test.txt Полный путь получается http://сайт.ru/test.txt Вопрос: ...

Проверка существования картинки на сервере
всем привет! в ответ на мой запрос через некое API приходит ответ с нужными мне параметрами. среди параметров есть такой - краткое...

Проверка на существования ID
Всем привет !!! :) У меня такой вопрос можно ли вообще проверить в PHP существует ли определенный ID в базе данных ? То есть у меня...

6
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
27.10.2012, 23:09
вот такой запрос к серверу
T-SQL
1
sp_databases
вернет реквизиты всех БД, которые под ним крутятся. Тебя интересует колонка DATABASE_NAME в результатах запроса.
Получив список БД и проанализировав его, принимаем решение, создавать БД или нет.
Вот пример функции, возвращающей список БД:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function GetBases()
        Dim DBlist As New ArrayList
        Dim reader As SqlDataReader
        Dim MyConn As New SqlClient.SqlConnection
        MyConn.ConnectionString = "Data Source=" & Me.cbxServName.Text & ";User ID=" & Me.txtUserID.Text & ";Password=" & Me.txtPassword.Text
        Dim query As String = "sp_databases"
        Dim command As SqlCommand = New SqlCommand(query, MyConn)
        Try
            MyConn.Open()
            reader = command.ExecuteReader
            While reader.Read()
                DBlist.Add(reader("DATABASE_NAME"))
            End While
            reader.Close()
            MyConn.Close()
        Catch ex As SqlException
            mess = (ex.Message)
        End Try
        Return DBlist
    End Function
1
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
28.10.2012, 01:44  [ТС]
Спасибо. Если правильно понял, то эта функция может так же вернуть и значение false/true по факту существования конкретной БД, если ее попросить об этом Буду копать именно в этом направлении, т.к. полный список всех баз мне не особо-то и нужен.
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
28.10.2012, 02:13
Цитата Сообщение от Павлик Морозов Посмотреть сообщение
эта функция может так же вернуть и значение false/true по факту существования конкретной БД
конечно.
0
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
28.10.2012, 23:35  [ТС]
Перекроил предложенный пример, что бы в результате функция возвращала true/false по факту существования базы. В итоге получаю только значение false, при том, что база есть. Если базы на самом деле нет, то вся работа приложения валится с ошибкой: "Недопустимая попытка чтения при отсутствии данных".

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub TestBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TestBtn.Click
        OpenSQLConnection()
        GetBases()
    End Sub
    Function GetBases()
        Dim DBlist As String
        Dim reader As SqlDataReader
        Dim query As String = "select * from sysdatabases where name = '" & DBNameTxt.Text & "'"
        Dim command As New SqlCommand(query, connection)
        reader = command.ExecuteReader
        reader.Read()
        DBlist = (reader("name"))
        reader.Close()
        connection.Close()
        Select Case DBlist
            Case DBlist = DBNameTxt.Text
                DbExist = True
            Case Else
                DbExist = False
        End Select
        Return DbExist
    End Function
Не могу понять, но почему-то не работает вот эта строка:
VB.NET
1
Case DBlist = DBNameTxt.Text
Сравнение этих переменных через оператор If дает тот же самый результат
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
29.10.2012, 10:00
T-SQL
1
select count(name) from sysdatabases where [name] = ...
и потом command.ExecuteScalar. Результат - число. Одно число и все. 0 или 1 в данном случае.
т.е.
T-SQL
1
Dim i as integer = command.ExecuteScalar
Ну а по твоему притеру. Ты проверял, что в строке DBlist после выполнения запроса?

Добавлено через 1 час 39 минут
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
по твоему притеру
...приМеру...
1
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
29.10.2012, 20:24  [ТС]
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
Ну а по твоему притеру. Ты проверял, что в строке DBlist после выполнения запроса?

...приМеру...
Проверял. После запроса в переменной DBlist висит имя базы, которую я и ищу самим запросом.

Получается при таких проверках на выходе надо по числам ориентироваться, а не по названию элемента. Забыл я про эту особенность T-SQL, что он просто ничего не возвращает, если поиск по значению столбца не дает результатов. Потому и с ошибкой падала работа системы, если я пытался проверить наличие не существующей базы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.10.2012, 20:24
Помогаю со студенческими работами здесь

Проверка существования id
Короче мне нужно чтоб выводило если нету этого ид то чтоб оно писало такого ид нету

Проверка существования кошелька
Можно ли как то сделать проверку на предмет существования кошелька, т.е. что бы заранее при вводе данных можно было сказать о валидности...

Проверка существования переменной
В массив заносятся данные, за тем их надо читать. Данные могут занестись не во все ячейки массива и останутся пустые. Когда читаю, пустые...

Проверка существования файла
здравствуйте. подскажите пожалуйста, как лучше сделать такую штуку: заполняю GridView, нажимаю кнопку сохранить, и данные сохраняются в...

Проверка существования файлов
Как сделать чтобы после первого запуска батника например создались файлы. когда будет второй и дальше запуск чтобы не создавались эти файлы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru