Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32

Сохранение информации в базу данных

24.01.2016, 11:34. Показов 4746. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю бд в wpf С# Нужно чтобы в texbox пользователь вводил информацию о себе и она сохранялась в базе данных
К примеру фио телефон адрес сколько лет
Помогите пожалуйста это сделать если есть у кого готовая приложение дайте пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2016, 11:34
Ответы с готовыми решениями:

Сохранение данных из datagridview в базу данных под MS sql server 2012
Доброго времени суток. Делаю курсовую, и до этого момента думал, что самое сложное создать правильную модель данных, но оказалось...

Сохранение данных, добавленных в базу данных access
Помогите сделать сохранение добавленных данных в бд, при перезапуске программы Вот код бд: private void metroButton3_Click(object...

Сохранение данных в базу данных SQL Server
Есть база данных LocalDB с одной таблицей Notice. Так же есть две формы: одна с textBox и comboBox'ами для добавления данных, другая с...

36
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
05.02.2016, 11:40  [ТС]
Студворк — интернет-сервис помощи студентам
ILKarina, Ту ошибку исправил и появилась новая
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
 
namespace WpfApp1
{
    /// <summary>
    /// Логика взаимодействия для Window2.xaml
    /// </summary>
    public partial class Window2 : Window
    {
        Entities entities = new Entities();
        public Window2()
        {
            InitializeComponent();
            foreach (var car in entities.Car)
                Car.Items.Add(car);
            content.Loaded += Content_Loaded;
            dataform.Loaded += Dataform_Loaded;
            Save.Click += saveclick;
            Fill();
        }
 
        private void Content_Loaded(object sender, RoutedEventArgs e)
        {
            datascroll.MaxHeight = content.MaxHeight - 34 - 5 - 22;
        }
 
        private void Fill()
        {
            DataCollection dt = new DataCollection();
            data.ItemsSource = dt;
        }
 
        private void Dataform_Loaded(object sender, RoutedEventArgs e)
        {
            Save.Width = dataform.ActualWidth - 2;
        }
 
        private void saveclick(object sender, RoutedEventArgs e)
        {
            if (!String.IsNullOrWhiteSpace(FIO.Text) || !String.IsNullOrWhiteSpace(telephone.Text) || !String.IsNullOrWhiteSpace(birthdate.Text) || !String.IsNullOrWhiteSpace(Car.SelectedIndex))
                using (var sqlconn = new SqlConnection(Window2.Connection()))
                {
                    using (var sqlcomm = new SqlCommand("INSERT INTO Example (FIO,telephone,birthdate,Car) VALUES (N'" + FIO.Text + "',N'" + telephone.Text + "',N'" +
                        birthdate.Text + "',N'" + Car.SelectedIndex + "')", sqlconn))
                    {
                        sqlconn.Open();
                        sqlcomm.ExecuteNonQuery();
                    }
                }
            else
                MessageBox.Show("Заполните все поля!");
            Fill();
        }
 
        public static string Connection()
        {
            string PathToDb = @"C:\Users\Sergey\Desktop\BD\Procat.mdf";
            return @"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename =" + PathToDb + ";Integrated Security=True";
        }
    }
}
Добавил комбо бокс
C#
1
2
 foreach (var car in entities.Car)
                Car.Items.Add(car);
C#
1
2
3
4
5
 if (!String.IsNullOrWhiteSpace(FIO.Text) || !String.IsNullOrWhiteSpace(telephone.Text) || !String.IsNullOrWhiteSpace(birthdate.Text) || !String.IsNullOrWhiteSpace(Car.SelectedIndex))
                using (var sqlconn = new SqlConnection(Window2.Connection()))
                {
                    using (var sqlcomm = new SqlCommand("INSERT INTO Example (FIO,telephone,birthdate,Car) VALUES (N'" + FIO.Text + "',N'" + telephone.Text + "',N'" +
                        birthdate.Text + "',N'" + Car.SelectedIndex + "')", sqlconn))
Ошибка с (Car.SelectedIndex)
Ошибка CS1503 Аргумент 1: не удается преобразовать из "int" в "string".
а когда делаю (Car.Text) ошибки этой нету, но появляется новая запускается приложение заполняю поля а в комбо боксе за место в веденных данных в таблицу пишет Wpf141.Car нажимаю кнопку сохранить и возникает ошибка на фото
Подскажи как исправить и если есть возможность напиши кодом)
Миниатюры
Сохранение информации в базу данных  
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
05.02.2016, 18:21
Лучший ответ Сообщение было отмечено Meowizzy как решение

Решение

Meowizzy, Проверьте базу данных. Там по-моему нету столбца Car.
По поводу преобразования int в string
можете попробовать формат индекса сделать:
C#
1
String.Format("{0}",Car.SelectedIndex)
И еще я у Вас кое-что не совсем правильное заметил:
Цитата Сообщение от Meowizzy Посмотреть сообщение
C#
1
!String.IsNullOrWhiteSpace(Car.SelectedIndex)
вот этот кусочек вам всегда true вернет, потому что если у комбобокса не выбран элемент то он всегда вернет -1, т.е. не IsNullOrWhiteSpace. Нужно так:
C#
1
Car.SelectedIndex!=-1
1
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
06.02.2016, 16:46  [ТС]
ILKarina, Cпасибо помогло. А подскажи пожалуйста
Вот проблема кое какая осталась
В комбо боксе пишет WpfApp1.Car и в datagrid выводит не название автомобилей а 0 или 1
И еще почти постоянно возникает ошибка с выбором даты иногда все хорошо а иногда когда изменяю дату выскакивает эта ошибка
Миниатюры
Сохранение информации в базу данных  
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
06.02.2016, 16:48  [ТС]
ILKarina,
Миниатюры
Сохранение информации в базу данных  
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
06.02.2016, 16:50
Meowizzy, а вы комбо
бокс как заполняете?
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
06.02.2016, 16:51  [ТС]
ILKarina, Ну столбец id и Name
1 Lada
2 Mers
и.т.п
SQL
1
2
3
4
5
CREATE TABLE [dbo].[Car] (
    [Id]  INT           NOT NULL,
    [Name] NVARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
06.02.2016, 16:54
И по-моему когда вы датагрид заполняет то он не может из стринг в дату кастануть

Добавлено через 1 минуту
Meowizzy, класс для заполнения комбобокса покажите
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
06.02.2016, 16:56  [ТС]
ILKarina,
InitializeComponent();
C#
1
2
  foreach (var Name in entities.Car)
                Car_Combo.Items.Add(Name);
И по-моему когда вы датагрид заполняет то он не может из стринг в дату кастануть
а как это исправить?
и исправил как ты сказал
C#
1
2
3
4
5
6
if (!String.IsNullOrWhiteSpace(FIO.Text) || !String.IsNullOrWhiteSpace(telephone.Text) || !String.IsNullOrWhiteSpace(birthdate.Text) || Car_Combo.SelectedIndex !=+ -1 )
                using (var sqlconn = new SqlConnection(Window2.Connection()))
                {
                    using (var sqlcomm = new SqlCommand("INSERT INTO Example (FIO,telephone,birthdate,Car) VALUES (N'" + FIO.Text + "',N'" + telephone.Text + "',N'" +
                        birthdate.Text + "',N'" + String.Format("{0}", Car_Combo.SelectedIndex)
+ "')", sqlconn))
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
06.02.2016, 18:10
Цитата Сообщение от Meowizzy Посмотреть сообщение
entities.Car
Откуда эта модель
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
06.02.2016, 18:19  [ТС]
ILKarina, Entities entities = new Entities();

в конфиге
Code
1
<connectionStrings><add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl
когда создал модель

ну так что за фигня?(
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
06.02.2016, 19:59
Meowizzy, я что-то не понял... Откуда он берет name для entities.Car?
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
06.02.2016, 23:01  [ТС]
ILKarina,
ой там

C#
1
2
  foreach (var car in entities.Car)
                Car_Combo.Items.Add(car);
а Car это табилца

Добавлено через 42 минуты
ILKarina, Блин вот уже час думаю никак(
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
07.02.2016, 07:38
Meowizzy, покажи где у тебя в коде "select * from car"
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 32
08.02.2016, 00:13  [ТС]
ILKarina, Блин у меня такого нету( я просто когда делал обычную мб с моделью и без connecta я его не использовал никогда и все работала
А как сделать и куда записать

Добавлено через 13 часов 35 минут
ILKarina, Блин пипец
исправил ошибку WpfApp1.Car
C#
1
2
 foreach (var id in entities.Car)
                Car_Combo.Items.Add(id.Name);
Теперь в комбобоксе название пишутся но в таблицу дада грид и в базу вставляются цифры 0 или 1 что может это быть?
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
08.02.2016, 03:46
Meowizzy, Потому что ты инсертишь индекс элемента комбобокса. А тебе надо по идее combobox.Text

Добавлено через 54 минуты
Meowizzy, Хотя по хорошему так и надо, хранить в бд не value, а key. А в коде уже key сопоставлять с value.
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
08.02.2016, 06:50
Мне все равно кажется что ты что-то не то делаешь....
Цитата Сообщение от Meowizzy Посмотреть сообщение
<connectionStrings><add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl
вот что вот это такое? я с этим никогда не сталкивался...

по мне так все должно быть намного проще:
1) Для заполнения datagrid'а делаешь "select * from Example" в котором уже есть столбец car(не путать с таблицей Car).
Кликните здесь для просмотра всего текста
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
    class DataModel
    {
        public string FIO { get; set; }
        public string telephone { get; set; }
        public string age { get; set; }
        public string car { get; set; } 
    }
    class DataCollection : ObservableCollection<DataModel>
    {
        public DataCollection()
        {
            using (var sqlconn = new SqlConnection(MainWindow.Connection()))
            {
                using (var sqlcomm = new SqlCommand("SELECT * FROM Example", sqlconn))
                {
                    sqlconn.Open();
                    using (var reader = sqlcomm.ExecuteReader())
                        while (reader.Read())
                        {
                            Add(new DataModel() {
                                FIO = reader["FIO"].ToString()
                                , telephone = reader["telephone"].ToString()
                                , age = AgeFromBirthdate(DateTime.Parse(reader["birthdate"].ToString()))
                                , car = reader["car"].ToString()
                            });
                        }
                    sqlconn.Close();
                }
            }
        }
        private string AgeFromBirthdate(DateTime dt1)
        {
            DateTime dt2 = DateTime.Now;
            if (dt2.Year <= dt1.Year)
                return "";
            int n = dt2.Year - dt1.Year;
            if (dt1.DayOfYear > dt2.DayOfYear) --n;
            string suff = "";
            if ((n / 10) != 1)
                switch (n % 10)
                {
                    case 1:
                        suff = "год";
                        break;
                    case 2:
                    case 3:
                    case 4:
                        suff = "года";
                        break;
                    default:
                        suff = "лет";
                        break;
                }
            else suff = "лет";
            return n + " " + suff;
        }
    }

2) Для заполнения combobox'а делаешь "select * from Car" (можешь считать это справочником для combobox'а).
Кликните здесь для просмотра всего текста
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
    class CarsModel
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    class CarsCollection : ObservableCollection<CarsModel>
    {
        public CarsCollection()
        {
            using (var sqlconn = new SqlConnection(MainWindow.Connection()))
            {
                using (var sqlcomm = new SqlCommand("SELECT * FROM Car", sqlconn))
                {
                    sqlconn.Open();
                    using (var reader = sqlcomm.ExecuteReader())
                        while (reader.Read())
                        {
                            Add(new CarsModel()
                            {
                                ID = Convert.ToInt32(reader["Id"].ToString())
                                , Name = reader["Name"].ToString()
                            });
                        }
                    sqlconn.Close();
                }
            }
        }
    }

Вот структура таблицы Car:
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
CREATE TABLE [dbo].[Car] (
    [Id]   INT           IDENTITY (1, 1) NOT NULL,
    [Name] VARCHAR (100) NULL
);

3) Теперь в класс DataCollection Добавить метод для конвертирования ID в Name
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
        private string CarIdToName(int id)
        {
            CarsCollection cars = new CarsCollection();
            string result = "";
            foreach(var car in cars)
            {
                if (id == car.ID)
                    result = car.Name;
            }
            return result;
        }

Тогда заполнение модели DataModel тоже немного изменяется: вместо
C#
1
car = reader["car"].ToString()
надо
C#
1
car = CarIdToName(Convert.ToInt32(reader["car"].ToString()))
3) Для избежания неправильной кодировки лучше в бд использовать не varchar, а nvarchar.Еще при сохранении возникла какая-то замутка и sql оказывается не понимает string даты которая отправляется с Birthdate, по-этому надо использовать параметры. Т.о. метод saveclick будет таким:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            var birth = birthdate.SelectedDate;
            if (!String.IsNullOrWhiteSpace(FIO.Text) || !String.IsNullOrWhiteSpace(telephone.Text) || !String.IsNullOrWhiteSpace(birthdate.Text)|| Cars.SelectedIndex != -1)
                using (var sqlconn = new SqlConnection(MainWindow.Connection()))
                {
                    
                    using (var sqlcomm = new SqlCommand("INSERT INTO Example (FIO,telephone,birthdate,car) VALUES (@FIO,@telephone,@birthdate,@car)", sqlconn))
                    {
                        sqlcomm.Parameters.Add("@FIO", SqlDbType.NVarChar, 500).Value = FIO.Text;
                        sqlcomm.Parameters.Add("@telephone", SqlDbType.VarChar, 20).Value = telephone.Text;
                        sqlcomm.Parameters.Add("@birthdate", SqlDbType.Date).Value = birth.Value.Date;
                        sqlcomm.Parameters.Add("@car", SqlDbType.Int).Value = Convert.ToInt32(Cars.SelectedValue);
                        sqlconn.Open();
                        sqlcomm.ExecuteNonQuery();
                        sqlconn.Close();
                    }
                }
            else
                MessageBox.Show("Заполните все поля!");
            Fill();

4)Меняешь xaml:
Кликните здесь для просмотра всего текста
XML
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
<Window x:Class="Example.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Example"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="800" ResizeMode="NoResize">
    <Grid>
        <StackPanel MaxHeight="320" x:Name="content">
            <StackPanel Orientation="Horizontal" x:Name="dataform" Width="730">
                <TextBox x:Name="FIO" Width="300" Margin="5,10,5,0"/>
                <TextBox x:Name="telephone" Width="100" Margin="0,10,5,0"/>
                <DatePicker x:Name="birthdate" Margin="0,10,5,0"/>
                <ComboBox x:Name="Cars" DisplayMemberPath="Name" SelectedValuePath="ID" TextBlock.TextAlignment="Center" Margin="0,10,5,0" Width="200"/>
            </StackPanel>
            <Button x:Name="Save" Content="Сохранить" Margin="10,5"/>
            <ScrollViewer x:Name="datascroll" ScrollViewer.VerticalScrollBarVisibility="Auto">
                <DataGrid x:Name="data" AutoGenerateColumns="False" IsReadOnly="True">
                    <DataGrid.Columns>                    
                        <DataGridTextColumn Header="ФИО" Binding="{Binding FIO}"/>
                        <DataGridTextColumn Header="Телефон" Binding="{Binding telephone}"/>
                        <DataGridTextColumn Header="Возраст" Binding="{Binding age}"/>
                        <DataGridTextColumn Header="Машина" Binding="{Binding car}"/>
                    </DataGrid.Columns>
            </DataGrid>
            </ScrollViewer>            
        </StackPanel>        
    </Grid>
</Window>

вот результат:
0
19 / 18 / 14
Регистрация: 06.03.2013
Сообщений: 335
08.02.2016, 06:59
Добавлено через 7 минут
Есть только одна проблема которую я надеюсь что ты сам сможешь одолеть немного погуглив:
Программа не сохраняет данные после перезапуска.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2016, 06:59

Сохранение в базу данных
Здравствуйте. Подскажите пожалуйста как сделать следующее: Исходные данные: - есть база данных из 10 столбцов (условно)...

Сохранение данных в базу .mdf
Доброго времени суток всем) Проблема стара как мир, но все возможные варианты решения, найденные мной на этом форуме и в гугле вообще не...

Сохранение изменений в базу данных
Добрый день помогите пожалуйста разобраться как сохранить изменения, которые ты сделал в datagridview, в базу дн. У меня в datagridview...

Сохранение изменений в базу данных
Здравствуйте, уважаемые программисты! Я начал первые шаги в освоении баз данных и решил, что самым простым инструментарием должны быть С#...

Сохранение данных с DataSet в базу данных
Здраствуйте. У меня есть датагрид который подвязан к таблице в базе. Мне нужно что бы при клике на кнопку данные которые ввели в грид...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru