0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
1
MS SQL

Ошибка подключения к БД

17.12.2015, 14:42. Показов 5301. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, не могу сделать кнопку для добавление записей.
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.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace KursovayaBD
{
    public partial class Form_Knigi : Form
    {
        public Form_Knigi()
        {
            InitializeComponent();
        }
        private System.Data.SqlClient.SqlConnection connect;
 
        private void Form_Knigi_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "libraryDataSet.Books". При необходимости она может быть перемещена или удалена.
            this.booksTableAdapter.Fill(this.libraryDataSet.Books);
            //String connectionString = "Data Source=ПК-DNS;Initial Catalog=Library;Integrated Security=True";
            //connect = new System.Data.SqlClient.SqlConnection(connectionString);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-KR0644U\SQLEXPRESS;AttachDbFilename = ""C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Library.mdf""; Integrated Security = True");
            connect.Open();
            SqlCommand command = connect.CreateCommand();
            if (textBox1.Text == "") textBox1.Text = "0";
            command.CommandText = @"Insert Into Books (Naz_Books,Impr_Date,FK_Avtor, FK_Rubriki)
            Values('" + this.textBox2.Text + "'," +
                 this.textBox3.Text + ", " + comboBox2.SelectedValue.ToString() + ", "
                 + comboBox1.SelectedValue.ToString() + ")";
 
            command.ExecuteNonQuery();
            this.booksTableAdapter.Fill(this.libraryDataSet.Books);
            connect.Close(); 
        }
    }
}
Ошибка: Ссылка на объект не указывает на экземпляр объекта.
Указывает на connect.open();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2015, 14:42
Ответы с готовыми решениями:

Ошибка при запуске 1С:Предприятия: Ошибка подключения HRESULT=80004005
Здравствуйте, помогите, пожалуйста. Посмотрел в инете и мало что понял из написанного там. Во...

Ошибка подключения к базе данных (неопознанная ошибка)
Добрый вечер! Закончил "любительскую" базу данных и столкнулся с неизвестной мне проблемой. ...

Ошибка при запуске "Данная ошибка вылетает вне зависимости от способов и компонентов подключения"
Доброго времени суток. Столкнулся с такой вот проблемой на XE версии делфей. Коннектится к базе...

Ошибка подключения к БД
Здравствуйте! Приложение в среде VS, язык С#, встраиваемая база данных Firebird Embedded. При...

20
31 / 31 / 15
Регистрация: 22.10.2015
Сообщений: 100
17.12.2015, 14:53 2
Создается переменная соединения под именем "connection" А на следующей строчке обращаемся почему то уже к другой переменной под именем "connect". А connect то где создается?

C#
1
2
  SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-KR0644U\SQLEXPRESS;AttachDbFilename = ""C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Library.mdf""; Integrated Security = True");
            connect.Open();
1
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 14:55  [ТС] 3
Спасибо. Исправил, теперь другая ошибка: При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения. (provider: Named Pipes Provider, error: 40 - Не удалось открыть подключение к SQL Server)
0
31 / 31 / 15
Регистрация: 22.10.2015
Сообщений: 100
17.12.2015, 15:00 4
В строке подключения уверены? Попробуйте создать строку подключения с помощью мастера Меню "Сервис - Подключиться к базе данных".

И в мастере проверить есть ли доступ к этой БД.
0
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 15:00  [ТС] 5
теперь вот эта ;(
Не удалось открыть физический файл "C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Library.mdf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
0
31 / 31 / 15
Регистрация: 22.10.2015
Сообщений: 100
17.12.2015, 15:02 6
Ну если занят... то думаю можно для начала ПК перезагрузить, мало ли...
0
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 15:04  [ТС] 7
Скорее уверен, чем нет. Вот попробовал как вы сказали, я так понял к мастеру подключение есть а к моей БД-library нет,
Миниатюры
Ошибка подключения к БД  
0
31 / 31 / 15
Регистрация: 22.10.2015
Сообщений: 100
17.12.2015, 15:12 8
Как вариант...
Сохранение данных в БД SQL Server - Процесс не может получить доступ к файлу

хотя тут соединение закрывается... но могло из-за ошибок не закрыться...
0
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 15:31  [ТС] 9
Перезагрузка пк не помогла, все равно пишет что занят другим процессом(
0
Администратор
Эксперт .NET
16535 / 12985 / 5108
Регистрация: 17.03.2014
Сообщений: 26,468
Записей в блоге: 1
17.12.2015, 15:43 10
Nooz, подохреваю что база уже подключена к SQL Server поэтому вместо параметра AttachDbFilename надо использовать параметр Initial Catalog:
C#
1
SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-KR0644U\SQLEXPRESS; Initial Catalog= Library; Integrated Security = True");
1
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 15:51  [ТС] 11
Да ты был прав! Теперь другая ошибка, можешь помочь?
Миниатюры
Ошибка подключения к БД  
0
Администратор
Эксперт .NET
16535 / 12985 / 5108
Регистрация: 17.03.2014
Сообщений: 26,468
Записей в блоге: 1
17.12.2015, 16:01 12
Лучший ответ Сообщение было отмечено sm0og1er как решение

Решение

sm0og1er, надо думать что SelectedValue для одного из ComboBox возвращает null. Попробуй заменить на comboBox1.Text и comboBox2.Text

Почитай также про использование класса SqlParameter. Строить динамические запросы так как это делаешь ты опасно. Это открывает возможность для так называемого "внедрения SQL кода" (SQL Injection).
1
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 16:16  [ТС] 13
Спасибо, помогло. Но вылезла другая ошибка) буду разбираться

Добавлено через 9 минут
Вообщем исправил все ошибки, но теперь ничего не происходит, не добавляется запись
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private void button1_Click(object sender, EventArgs e)
        {
            //string ConString = "server=localhost;User Id=root;password=root;database=Library;Persist Secu" +
            //"rity Info=True"; //строка содержащая путь к файлу
            //SqlConnection connection = new SqlConnection(ConString);
            SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-KR0644U\SQLEXPRESS; Initial Catalog= Library; Integrated Security = True");
 
            connection.Open();
            SqlCommand command = connection.CreateCommand();
            if (textBox1.Text == "") textBox1.Text = "0";
            command.CommandText = @"Insert Into Books (Naz_Books,Impr_Date,FK_Avtor, FK_Rubriki)
            Values('" + this.textBox2.Text + "'," +
                 this.textBox3.Text + ", " + comboBox2.SelectedValue.ToString() + ", "
                 + comboBox1.SelectedValue.ToString() + ")";
 
           // command.ExecuteNonQuery();
            this.booksTableAdapter.Fill(this.libraryDataSet.Books);
            connection.Close(); 
        }
0
Администратор
Эксперт .NET
16535 / 12985 / 5108
Регистрация: 17.03.2014
Сообщений: 26,468
Записей в блоге: 1
17.12.2015, 16:27 14
sm0og1er, команду неплохо бы еще и выполнить, а у тебя вызов ExecuteNonQuery() почему-то закоментирован.
0
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 16:33  [ТС] 15
из за этой функции ошибка
0
Администратор
Эксперт .NET
16535 / 12985 / 5108
Регистрация: 17.03.2014
Сообщений: 26,468
Записей в блоге: 1
17.12.2015, 16:54 16
sm0og1er, какая ошибка?
0
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 17:18  [ТС] 17
ExecuteNonQuery: Свойство CommandText не инициализировано, а что ей присвоить я не знаю
0
Администратор
Эксперт .NET
16535 / 12985 / 5108
Регистрация: 17.03.2014
Сообщений: 26,468
Записей в блоге: 1
17.12.2015, 17:32 18
sm0og1er, быть такого не может. В приведенных примерах свойство CommandText (в котором мы пишем текст SQL запроса) инициализируется. Показывай весь код.
1
0 / 0 / 2
Регистрация: 22.10.2013
Сообщений: 66
17.12.2015, 18:10  [ТС] 19
Вот код:
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
49
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace KursovayaBD
{
    public partial class Form_Knigi : Form
    {
        public Form_Knigi()
        {
            InitializeComponent();
        }
 
        private void Form_Knigi_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "libraryDataSet.Vd_Books". При необходимости она может быть перемещена или удалена.
            this.vd_BooksTableAdapter.Fill(this.libraryDataSet.Vd_Books);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "libraryDataSet.Books". При необходимости она может быть перемещена или удалена.
            this.booksTableAdapter.Fill(this.libraryDataSet.Books);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //string ConString = "server=localhost;User Id=root;password=root;database=Library;Persist Secu" +
            //"rity Info=True"; //строка содержащая путь к файлу
            //SqlConnection connection = new SqlConnection(ConString);
            SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-KR0644U\SQLEXPRESS; Initial Catalog= Library; Integrated Security = True");
 
            connection.Open();
            SqlCommand command = connection.CreateCommand();
            if (textBox1.Text == "") textBox1.Text = "0";
           // string cmbox1 = comboBox1.Text;
            //string cmbox2 = comboBox2.Text;
            command.CommandText = @"Insert Into Books (Naz_Books,Impr_Date,FK_Avtor, FK_Rubriki) Values(" + this.textBox2.Text + "," + this.textBox3.Text + ", " + comboBox2.Text + ", "+ comboBox1.Text + ")";
            command.ExecuteNonQuery();
           this.booksTableAdapter.Fill(this.libraryDataSet.Books);
           MessageBox.Show("Запись изменена!");
            connection.Close(); 
        }
    }
}
Вообщем такая штука, не признает он почему любые данные которые вводятся в txtbox2.
Пробовал в самом sql писать запрос на добавление данных,все получилось
Миниатюры
Ошибка подключения к БД  
0
Администратор
Эксперт .NET
16535 / 12985 / 5108
Регистрация: 17.03.2014
Сообщений: 26,468
Записей в блоге: 1
17.12.2015, 19:14 20
Лучший ответ Сообщение было отмечено sm0og1er как решение

Решение

sm0og1er, это совершенно другая ошибка из-за неправильного текста запроса. Строки в SQL нужно заключать в одинарные кавычки:
C#
1
command.CommandText = "Insert Into Books (Naz_Books,Impr_Date,FK_Avtor, FK_Rubriki) Values('" + this.textBox2.Text + "','" + this.textBox3.Text + "', '" + comboBox2.Text + "', '"+ comboBox1.Text + "')";
Еще раз повторяю совет насчет использования параметров. Код button1_Click лучше записать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "") textBox1.Text = "0";
    
    using (SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-KR0644U\SQLEXPRESS; Initial Catalog= Library; Integrated Security = True"))
    {
        SqlCommand command = connection.CreateCommand();
        command.CommandText = "INSERT INTO Books (Naz_Books,Impr_Date,FK_Avtor, FK_Rubriki) VALUES (@Naz_Books, @Impr_Date, @FK_Avtor, @FK_Rubriki)";
        command.Parameters.AddWithValue("@Naz_Books" , textBox2.Text);
        command.Parameters.AddWithValue("@Impr_Date" , textBox3.Text);
        command.Parameters.AddWithValue("@FK_Avtor"  , comboBox2.Text);
        command.Parameters.AddWithValue("@FK_Rubriki", comboBox1.Text);
 
        connection.Open();
        command.ExecuteNonQuery();
    }
    
    this.booksTableAdapter.Fill(this.libraryDataSet.Books);
 
    MessageBox.Show("Запись изменена!");
}
1
17.12.2015, 19:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2015, 19:14
Помогаю со студенческими работами здесь

Ошибка подключения
Добрый день, уважаемые форумчане! Столкнулся с такой проблемой, не могу установить соединение в MS...

Ошибка подключения к БД
Здравствуйте. Пробую подключить БД. Но получаю вот такую вот ошибку. Может кто сталкивался с такой...

Ошибка подключения к БД
визкульт привет) у меня проблема. ...

Ошибка подключения к БД
Здравствуйте создал клиент для БД ювелирного магазина, на моём пк программа запускает нормально, но...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru