Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
White Wolf
3 / 3 / 4
Регистрация: 08.04.2008
Сообщений: 85
Завершенные тесты: 1
1

Запись данных в базу

14.03.2016, 22:08. Просмотров 887. Ответов 7

Нужно чтоб значения из техтбокса и комбобокса записывались в базу.
С базами Access я никогда не работал, поэтому не все понятно.
При выполнении кода получаю: "отсутствует значение для одного или нескольких требуемых параметров". не пойму где ошибка.

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
50
51
52
53
54
55
56
57
58
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.OleDb;
using System.Text.RegularExpressions;
 
namespace lamps
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string digits_num_lamp = textBox1.Text;
            string Combo2text = comboBox2.Text;
            try
            {
                Regex r = new Regex(@"\d");
                Match m = r.Match(digits_num_lamp);
                if (((digits_num_lamp != "") & (m.Success)) & (comboBox2.SelectedIndex != -1))
                {
                    string sql = "INSERT INTO fix(num_lamp, type_repair)" +
                                        "VALUES(" + digits_num_lamp + "," + Combo2text + ")";
 
                    string connectionString;
                    DataTable dataTable = new DataTable();
                    DataGridView dataGridView = new DataGridView();
                    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Lamps.mdb;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=Пароль";
                    OleDbConnection connection = new OleDbConnection(connectionString);
                    connection.Open();
                    OleDbCommand OleDbCommand = new OleDbCommand(sql, connection);
                    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(OleDbCommand);
                    OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter);
                    //dataAdapter.Fill(dataTable);
                    //dataGridView.DataSource = dataTable;
                    //dataAdapter.Update((DataTable)dataGridView.DataSource);
                    OleDbCommand.ExecuteNonQuery();
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка: " + ex.Message);
            }
 
        }
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2016, 22:08
Ответы с готовыми решениями:

Запись данных в базу данных mdb с использованием DataAdapter и DataSet
Попробовал сделать Update для таблицы контактов: private void...

Запись данных в базу данных SQL и выгрузка таблицы в форму
Нужно сделать 2 формы, одну с несколькими textBox'ами, чтобы при нажатии кнопки...

Запись в базу данных
Имеется база данных пользователей. Таблица Human(ID,FIO, SEX, DateOfBirth,...

Запись в базу данных
Создаю Win Form . При запуске приложении открывается вот такая окошка. Как...

Запись в базу данных Access
Здравствуйте. Делаю дипломный проект. Есть необходимость записать в БД Access...

7
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
15.03.2016, 06:01 2
Лучший ответ Сообщение было отмечено White Wolf как решение

Решение

вроде как то так
C#
1
2
3
4
5
6
7
8
9
10
11
DataGridView dataGridView = new DataGridView();
                    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Lamps.mdb;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=Пароль";
                    OleDbConnection connection = new OleDbConnection(connectionString);
                    connection.Open();
                    OleDbCommand OleDbCommand = new OleDbCommand(sql, connection);
string sql = "INSERT INTO fix([num_lamp], [type_repair])" +
                                        "VALUES(@textbox, @combobox)";
OleDbCommand.Parameters.AddWithValue("@textbox", digits_num_lamp.Text);
OleDbCommand.Parameters.AddWithValue("@combobox", Combo2text.Text);
int ui = OleDbCommand.ExecuteNonQuery();
            conn.Close();
1
White Wolf
3 / 3 / 4
Регистрация: 08.04.2008
Сообщений: 85
Завершенные тесты: 1
15.03.2016, 15:15  [ТС] 3
Попробую, позже отпишусь по результату.
0
White Wolf
3 / 3 / 4
Регистрация: 08.04.2008
Сообщений: 85
Завершенные тесты: 1
16.03.2016, 20:16  [ТС] 4
Проверил, кое-что подправил.
Выдает ошибку, Инструкция INSERT INTO содержит неизвестное имя поля 'num_lamp'.
Имя поле точно такое, не содержит служебных слов, не на русском, без пробелов. Что не нравится, не понимаю.Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
                    DataGridView dataGridView = new DataGridView();
                    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Lamps.mdb;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=Пароль";
                    OleDbConnection connection = new OleDbConnection(connectionString);
                    connection.Open();
                    string sql = "INSERT INTO fix([num_lamp], [type_repair])" +
                                        "VALUES(@textbox, @combobox)";
                    OleDbCommand OleDbCommand = new OleDbCommand(sql, connection);
                    OleDbCommand.Parameters.AddWithValue("@textbox", digits_num_lamp);
                    OleDbCommand.Parameters.AddWithValue("@combobox", Combo2text);
                    OleDbCommand.ExecuteNonQuery();
                    connection.Close();
0
SailarmoonKS
91 / 91 / 36
Регистрация: 01.10.2014
Сообщений: 226
Завершенные тесты: 1
16.03.2016, 20:22 5
OleDbCommand OleDbCommand = new OleDbCommand(sql, connection);

Переменную обзовите по другому, а то название переменной есть название класса
0
White Wolf
3 / 3 / 4
Регистрация: 08.04.2008
Сообщений: 85
Завершенные тесты: 1
17.03.2016, 17:54  [ТС] 6
Исправил, спасибо.
C#
1
2
3
4
                    OleDbCommand OleDbComm = new OleDbCommand(sql, connection);
                    OleDbComm.Parameters.AddWithValue("@textbox", digits_num_lamp);
                    OleDbComm.Parameters.AddWithValue("@combobox", Combo2text);
                    OleDbComm.ExecuteNonQuery();
Добавлено через 21 час 21 минуту
Результат все равно тот же. Ошибка осталась.
0
SailarmoonKS
91 / 91 / 36
Регистрация: 01.10.2014
Сообщений: 226
Завершенные тесты: 1
17.03.2016, 20:23 7
Может в названии столбца присутствуют русские буквы? У меня как то такое было - неделю башкой об стенку бился...
1
White Wolf
3 / 3 / 4
Регистрация: 08.04.2008
Сообщений: 85
Завершенные тесты: 1
19.03.2016, 23:14  [ТС] 8
Точно! Вот же сколько времени убил! Все заработало!
0
19.03.2016, 23:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2016, 23:14

Запись в базу данных access
При попытке выполнения кода выдаёт ошибку "Ошибка синтаксиса в инструкции...

Запись в базу данных Access
добрый день, не могу записать в базу данных, не понимаю в чем ошибка, на шарпе...

Не добавляется запись в базу данных
Почему этот кусок говна кода не работает? Данные приходят, всё нормально....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru