Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/41: Рейтинг темы: голосов - 41, средняя оценка - 4.73
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321

Соединение с SQL Server

31.01.2011, 22:12. Показов 8154. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго время суток столкнулся с такой проблемой, нужно написать программу для соединения с SQL Server. С начала создается тестовая база данных TestDB, в ней таблица Book (рис. BookTable) с элементами (BookID-номер книги, Title-заголовок, PublishYear-год издания). Затем создается консольное приложение SQL Server:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
 
namespace ConnectToSqlServer
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string connectionString = GetConnectionString();
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    //Не забудьте передать команде объект-соединение
                    using (SqlCommand cmd = new SqlCommand("SELECT * FROM Books", conn))
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        //Класс SqlDataReader читает ряды и базы данных по одному, по мере
                        //того, как вы их запрашиваете
                        while (reader.Read())
                        {
                            Console.WriteLine("{0}\t{1}\t{2}", reader.GetInt32(0), reader.GetString(1), reader.GetInt32(2));
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                Console.Write(ex);
            }
            Console.ReadKey();
        }
 
        //Хранить строки соединения в исходном коде не нужно,
        //но здесь сделано в иллюстративных целях
        static string GetConnectionString()
        {
            //Укажите источник данных, соответствующий
            //локальной копии SQL Server на компьютере
            return @"Data source= DNAPC\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=SSPI";
        }
    }
}
При запуске программы на выполнения возникает ошибка исключения(рис. ErrorException)На сколько я понял проблема заключена в этой строке:
C#
1
 return @"Data source= DNAPC\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=SSPI";
У меня SQL Server находится в
C:\Program Files\Microsoft SQL Server\MSQL10.SQLEXPRESS\MSSQL\Binn
Имя компьютера DNAPC и сервера тоже DNAPC. Тестовая база данных TestDB находится на локальном сервере DNAPC. Так почему же у меня при запуске программа не может найти базу данных TestDB. Помогите пожалуйста заранее огромное спасибо!!!!!
 Комментарий модератора 
isaak, для баз данных есть специальный раздел.
Миниатюры
Соединение с SQL Server   Соединение с SQL Server  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2011, 22:12
Ответы с готовыми решениями:

Соединение с SQL Server из приложения
Изучаю возможности работы с базами данных в С#. В примерах, которые описываются в литературе вроде бы все просто... из Visual Studio...

Соединение с sql server database 2012 через c#
Пишу код,не могу соединиться с БД(использую sql server2012) используя логин и пароль. Пользователи описаны на стороне сервера таким...

Удалённое соединение с Microsoft SQL server 2005
Доброго времени суток. Я пишу программу, которая должна соединяться с бд на Microsoft SQL Server 2005,которая находится на другом...

13
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
31.01.2011, 22:19
Попробуйте просто закодировать строку подключения без функции,например:
C#
1
private const string connectionString=@"DataSource=(local)SQLEXPRESS;InitialCatalog=%назавание файла базы данных%"+";IntegratedSecurity=SSPI";
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
31.01.2011, 23:12  [ТС]
BrumbleHorse спасибо за ответ я сделал как вы сказали:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
 
namespace ConnectToSqlServer
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string connectionString = GetConnectionString();
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    //don't forget to pass the connection object to the command
                    using (SqlCommand cmd = new SqlCommand("SELECT * FROM Books", conn))
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        //SqlDataReader reads the rows one at a time from the database
                        //as you request them
                        while (reader.Read())
                        {
                            Console.WriteLine("{0}\t{1}\t{2}", reader.GetInt32(0), reader.GetString(1), reader.GetInt32(2));
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                Console.Write(ex);
            }
            Console.ReadKey();
        }
 
        //you shouldn't store connection strings in source code, but this is
        //to illustrate SQL access, so I'm keeping it simple
        static string GetConnectionString()
        {
            //change data source to point to your local copy of SQL Server
           private const string connectionString=@"DataSource=(local)SQLEXPRESS;InitialCatalog=%назавание файла базы данных%"+";IntegratedSecurity=SSPI";;
        }
    }
}
но у меня при компиляции появились ошибки:
Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 42 9 ConnectToSqlServer
Error 2 Invalid expression term 'private' C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 44 12 ConnectToSqlServer
Error 3 ; expected C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 44 20 ConnectToSqlServer

Что, то опять не правильно, я новичок можете объяснить поподробнее заранее огромное спасибо.
0
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
31.01.2011, 23:36
Цитата Сообщение от isaak Посмотреть сообщение
IntegratedSecurity=SSPI";;
лишняя точка с запятой.. это к ошибке номер 3..

а вообще я имел ввиду зачем вам функция GetConnectionString?... в функции возвращающей значение должен быть return (в этом суть ошибок компиляции)..

я имел ввиду чтобы вы сделали так:
C#
1
string connectionString=@"DataSource=(local)SQLEXPRESS;InitialCatalog=%назавание файла базы данных%"+";IntegratedSecurity=SSPI";
без использования функции GetConnectionString
ну и в %название базы данных% надо поставить название файла вашей бд, а не дословно код копировать

Добавлено через 12 минут
Вот примерная логика работы с базой данных:
C#
1
2
3
4
5
SqlConnection sqlCn = new SqlConnection();
 sqlCn.ConnectionString =@"DataSource=(local)SQLEXPRESS;InitialCatalog=%назавание файла базы данных%"+";IntegratedSecurity=SSPI";
sqlCn.Open();
//Ваши действия с бд
sqlCn.Close();
Добавлено через 3 минуты
В идеале, реализацию нужно бы раскидать по разным модулям - один модуль обеспечивает доступ к данным вашей базы (библиотека доступа к данным), а другой модуль определяет интерфейс для взаимодействия с базой посредством библиотеки доступа к данным (служба)..
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
01.02.2011, 12:23  [ТС]
BrumbleHorse вроде сделал как вы сказали:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
 
namespace ConnectToSqlServer
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
               
                using (SqlConnection sqlCn = new SqlConnection())
                {
                    sqlCn.ConnectionString = @"DataSource=(local)SQLEXPRESS;InitialCatalog=%TestDB%" + ";IntegratedSecurity=SSPI";
                    sqlCn.Open();  //открыл базу считал данные вывел на экран
                    using (SqlCommand cmd = new SqlCommand("SELECT * FROM Books",  sqlCn))
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        
                       while (reader.Read())
                        {
                            Console.WriteLine("{0}\t{1}\t{2}", reader.GetInt32(0), reader.GetString(1), reader.GetInt32(2));
                        }
                        sqlCn.Close(); //закрыл базу 
                    }
                }
            }
            catch (SqlException ex)
            {
                Console.Write(ex);
            }
            Console.ReadKey();
        }
 
       }
}
Что опять не правильно я не понимаю??????
0
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
01.02.2011, 12:31
А какие ошибки выдает?.. Как минимум
C#
1
%TestDB%
надо исправить на
C#
1
TestDB
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
01.02.2011, 12:51  [ТС]
Заменил %TestDB% на TestDB все равно выскакивает ошибка исключения (рис. ErrorException). Что опять не правильно????
Миниатюры
Соединение с SQL Server  
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
01.02.2011, 13:00  [ТС]
Как еще можно прописать путь к базе????? Помогите пожалуйста!!!!
0
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
01.02.2011, 13:44
Цитата Сообщение от isaak Посмотреть сообщение
Как еще можно прописать путь к базе????? Помогите пожалуйста!!!!
Внимательно читай что пишет исключение.

Такого ключего слова нет: DataSource
А есть: Data Source

Следующая ошибка полезет: (local)SQLEXPRESS
Вместо (local)SQLEXPRESS напиши .\SQLExpress либо (local)\SQLEXPRESS
0
 Аватар для Алексей86
25 / 18 / 4
Регистрация: 05.04.2010
Сообщений: 85
01.02.2011, 15:26
Если используется сервер с идентификацией Windows, то используй

C#
1
 sqlCn.ConnectionString = String.Format("Data Source={0};Initial Catalog={1};Integrated Security=True", (local)\SQLEXPRESS, TestDB);

Если же ты используешь имя пользователя и пароль для подключения к серверу, то соответственно

C#
1
 sqlCn.ConnectionString = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID={2};Password={3}", (local)\SQLEXPRESS, TestDB, [Имя пользователя], [Пароль]);
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
01.02.2011, 22:33  [ТС]
У меня SQL Server с базой данных все находится на одном компьютере - локальная версия SQLEXPRESS.
Алексей86:

1)Если используется сервер с идентификацией Windows, то используй:
C#
1
2
 sqlCn.ConnectionString =
 String.Format("Data Source={0};Initial Catalog={1};Integrated Security=True", (local)\SQLEXPRESS, TestDB);
Ошибки компиляции:
Error 1 The type or namespace name 'local' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 19 125 ConnectToSqlServer
Error 2 The name 'SQLEXPRESS' does not exist in the current context C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 19 131 ConnectToSqlServer
Error 3 The name 'TestDB' does not exist in the current context C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 19 143 ConnectToSqlServer

2)Если же ты используешь имя пользователя и пароль для подключения к серверу, то соответственно:
C#
1
2
 sqlCn.ConnectionString = 
String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID={2};Password={3}", (local)SQLEXPRESS, TestDB, DNAPC);
Ошибки компиляции:
Error 1 The type or namespace name 'local' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 20 150 ConnectToSqlServer
Error 2 The name 'SQLEXPRESS' does not exist in the current context C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 20 156 ConnectToSqlServer
Error 3 The name 'TestDB' does not exist in the current context C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 20 168 ConnectToSqlServer
Error 4 The name 'DNAPC' does not exist in the current context C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ConnectToSqlServer\Conn ectToSqlServer\Program.cs 20 176 ConnectToSqlServer

DNAPC - имя компьютера, имя сервера тоже - DNAPC
Помогите пожалуйста кто-нибудь!!!!
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
02.02.2011, 12:07  [ТС]
Этот задание взято из книги Бена Ватсона "C#4.0 на примерах".

C#
1
  return @"Data source=BEN-DESKTOP\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=SSPI";
Судя из этой строчке кода у него локальная копия SQL Server с тестовой базой данных TestDB на его компьютере находится на рабочем столе. Как я могу вывести на свой рабочей стол локальную копию SQL Server с тестовой базой данных TestDB? Когда я запускаю Visual Studio, открываю Server Explorer -> Tables у меня присутствует искомая база данных TestDB с таблицей Book(рис.ServerExplorer.png). Копирование папки Microsoft SQL Server из папки Program Files на рабочий стол ничего не дает. Помогите пожалуйста кто-нибудь!!!! Уже 4 сутки бьюсь!!!!1
Миниатюры
Соединение с SQL Server  
0
 Аватар для Алексей86
25 / 18 / 4
Регистрация: 05.04.2010
Сообщений: 85
02.02.2011, 12:40
А как ты добавил в Server Explorer свою БД? По любому с помощью мастера, так? Вот если с помощью мастера, то во время создания, в завершающемся этапе, ты можешь увидеть строку подключения, посмотри и сделай на подобе свою.

Добавлено через 13 минут
Также эту строку можещь посмотреть в свойствах подключения в Server Explorer.

Добавлено через 2 минуты
Если ничего не поможет, могу помочь только с помощью того, что бы влезть в твой комп через программку TeamViewer
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,321
02.02.2011, 14:37  [ТС]
Спасибо Алексей86 все заработало. Из за одной строчки:
C#
1
 return @"Data Source=DNAPC\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=True"
с return тоже заработало. Из за одной строчки 4 суток сидел!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2011, 14:37
Помогаю со студенческими работами здесь

Соединение Visual studio c SQL server express 2012
Обращаюсь с надеждой найти решение проблемы, с которой я столкнулся. Ситуация: Установил SQL express 2012 c максимальной комплектацией...

Соединение с SQL Server: Ошибка при обнаружении указанного сервера или экземпляра
Помогите пожалуста исправить неполучается соеденится с SQL Server.

Microsoft SQL Server Compact Edition в SQL Server Management Studio Express
Не могу понять как настроить SQL Server Management Studio Expres чтоб открывать и создавать бд sql ce. В менеджере просто нет возможности...

Настройка SQL Server 2008 для работы с SQL Server Management Studio
Доброго времени суток. Подскажите пожалуйста, что нужно сделать для того, чтобы SQL Server Management Studio соединялось с SQL сервером ?...

Добавление файла *.mdf. Ошибка "Должен быть установлен и запущен экспресс-выпуск SQL Server 2005 или SQL Server 2008"
Установлена Visual Studio 2010 и SQL Server 2008 R2 Standard. Хочу добавить в приложение файл базы данных *.mdf, но пишет: "должен...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru