Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 12

Как можно совершить редактирование в SQlite c C#

01.11.2021, 18:39. Показов 1976. Ответов 7

Студворк — интернет-сервис помощи студентам
В данный момент реализовано добавление в БД, теперь записанные данные не получается редактировать, имеется форма XAML, заполняется, сохраняется, так же и показываются данные находящийся там, вопрос как можно совершить редактирование этих данных и вывод?

Прикладываю код с попыткой записи в БД
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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>
    /// Логика взаимодействия для Red.xaml
    /// </summary>
    public partial class Red : Window
    {
        AppContecst db;
        public Red()
        {
            InitializeComponent();
            db = new AppContecst(); //обращение к классу подключения базы данных выделение памяти
            string name = textboxName.Text.Trim();
            string famil = textboxfamil.Text.Trim();
            string otches = textboxotches.Text.Trim();
            string pol = textboxpol.Text.Trim();
            string podrazdel = textboxpodrazdel.Text.Trim();
            string dolzhnost = textboxdolzhnost.Text.Trim();
            string kabinet = textboxkabinet.Text.ToLower().Trim();
            string telefon_rab = textboxtelefon_rab.Text.Trim();
            string telefon_lichni = textboxtelefon_lichni.Text.Trim();
            string pochta = textboxpochta.Text.ToLower().Trim();
            string data_rozhde = textboxdate_rozhde.Text.Trim();
            string mesto_rozh = textboxmesto_rozh.Text.Trim();
            string grazhdan = textboxgrazhdan.Text.ToLower().Trim();
            string semeinoe = textboxsemeinoe.Text.Trim();
            //BitmapMetadataBlob img = Imageboxfoto.DataContext;
            MessageBox.Show("gut"); //окно с сообщением что регистрация прошла успешна
            AppStaff Staffs = new AppStaff(name, famil, otches, pol, podrazdel, dolzhnost, kabinet, telefon_rab, telefon_lichni, pochta, data_rozhde, mesto_rozh, grazhdan, semeinoe);
            db.AppStaffs.Add(Staffs);
 
            AppStaff authUser = null;
            using (AppContecst db = new AppContecst())//обращение к бд
            {
               authUser = db.AppStaffs.Where(b => b.Name == name && b.Famil == famil).SingleOrDefault();//проверка есть в базе информация
            }
            if (authUser != null)
            {
                authUser.Name = AppStaffs.Name; //ОШИБКИ ТУТ
                authUser.Famil = AppStaffs.Famil; //ОШИБКИ ТУТ
                MessageBox.Show("gut");//сообщение о наличии данных
                UserPageWindow userPageWindow = new UserPageWindow();//переброс в кабинет оператора
                userPageWindow.Show();
                Hide();
            }
 
        }
    }
}
Класс модель БД

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace WpfApp1
{
    class AppStaff
 
    {
        public int id { get; set; }
        private string  name, famil, otches, pol, podrazdel, dolzhnost, kabinet, telefon_rab, telefon_lichni, pochta, data_rozhde, mesto_rozh, grazhdan, semeinoe;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public string Famil
        {
            get { return famil; }
            set { famil = value; }
        }
        public string Otches
        {
            get { return otches; }
            set { otches = value; }
        }
       public string Pol
        {
            get { return pol; }
            set { pol = value; }
        }
        public string Podrazdel
        {
            get { return podrazdel; }
            set { podrazdel = value; }
        }
        public string Dolzhnost
        {
            get { return dolzhnost; }
            set { dolzhnost = value; }
        }
        public string Kabinet
        {
            get { return kabinet; }
            set { kabinet = value; }
        }
        public string Telefon_rab
        {
            get { return telefon_rab; }
            set { telefon_rab = value; }
        }
        public string Telefon_lichni
        {
            get { return telefon_lichni; }
            set { telefon_lichni = value; }
        }
        public string Pochta
        {
            get { return pochta; }
            set { pochta = value; }
        }
        public string Data_rozhde
        {
            get { return data_rozhde; }
            set { data_rozhde = value; }
        }
        public string Mesto_rozh
        {
            get { return mesto_rozh; }
            set { mesto_rozh = value; }
        }
        public string Grazhdan
        {
            get { return grazhdan; }
            set { grazhdan = value; }
        }
        public string Semeinoe
        {
            get { return semeinoe; }
            set { semeinoe = value; }
        }
 
        /* public string Img
{
get { return img; }
set { img = value; }
}*/
        public AppStaff() { }
        public AppStaff(string name, string famil, string otches , string pol, string podrazdel, string dolzhnost, string kabinet, string telefon_rab,
            string telefon_lichni, string pochta, string data_rozhde, string mesto_rozh, string grazhdan, string semeinoe)
        {
            this.name = name;
            this.famil = famil;
            this.otches = otches;
            this.pol = pol;
            this.podrazdel = podrazdel;
            this.dolzhnost = dolzhnost;
            this.kabinet = kabinet;
            this.telefon_rab = telefon_rab;
            this.telefon_lichni = telefon_lichni;
            this.pochta = pochta;
            this.data_rozhde = data_rozhde;
            this.mesto_rozh = mesto_rozh;
            this.grazhdan = grazhdan;
            this.semeinoe = semeinoe;
         
 
        }
    }
}

И код для получения доступа к БД

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Entity;
 
namespace WpfApp1
{
    class AppContecst : DbContext
    {
        public DbSet<AppStaff> AppStaffs { get; set; }
        public DbSet<User> Users { get; set; }
        
        public AppContecst() : base("DefaultConnection") { }
 
    }
}


Добавление записи в БД (но тут все норм, на всякий случай)

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
74
75
76
77
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.Navigation;
using System.Windows.Shapes;
 
 
namespace WpfApp1
{
    /// <summary>
    /// Логика взаимодействия для Staff.xaml
    /// </summary>
    public partial class Staff : Window
    {
        AppContecst db;
        
 
        public Staff()
        {
            InitializeComponent();
            db = new AppContecst(); //обращение к класу подключения базы данных выделение памяти
        }
        
        private void Button_add_Click(object sender, RoutedEventArgs e)
        {
            string name = textboxName.Text.Trim();
            string famil = textboxfamil.Text.Trim();
            string otches = textboxotches.Text.Trim();
            string pol = textboxpol.Text.Trim();
            string podrazdel = textboxpodrazdel.Text.Trim();
            string dolzhnost = textboxdolzhnost.Text.Trim();
            string kabinet = textboxkabinet.Text.ToLower().Trim();
            string telefon_rab = textboxtelefon_rab.Text.Trim();
            string telefon_lichni = textboxtelefon_lichni.Text.Trim();
            string pochta = textboxpochta.Text.ToLower().Trim();
            string data_rozhde = textboxdate_rozhde.Text.Trim();
            string mesto_rozh = textboxmesto_rozh.Text.Trim();
            string grazhdan = textboxgrazhdan.Text.ToLower().Trim();
            string semeinoe = textboxsemeinoe.Text.Trim();
            //BitmapMetadataBlob img = Imageboxfoto.DataContext;
            MessageBox.Show("gut"); //окно с сообщением что регистрация прошла успешна
            AppStaff Staffs = new AppStaff(name, famil, otches, pol, podrazdel, dolzhnost, kabinet, telefon_rab, telefon_lichni, pochta, data_rozhde, mesto_rozh, grazhdan, semeinoe);
            db.AppStaffs.Add(Staffs);
            db.SaveChanges(); //Сохранение в базе данных
 
            AuthWindow authWindow = new AuthWindow();
            authWindow.Show();
            Hide();//Прятать текущее окно
 
        }
 
        private void Button_Close_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
 
        }
 
        private void Button_Foto_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();// создаем диалоговое окно
            openFile.ShowDialog();// открываем окно
            string FileName = openFile.FileName;// берем полный адрес картинки*/
           
        }
       
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2021, 18:39
Ответы с готовыми решениями:

Редактирование связанных объектов через EF в SQLite, C#, EF 6.2, SQLite, C# Winforms
Здравствуйте. Суть: используя вышеперечисленные технологии, при чтении из базы данных связанных объектов после добавления, функция...

Как можно совершить обход двоичного дерева нерекурсивно
Доброго времени суток. Хочу поинтересоваться: как можно совершить обход двоичного дерева нерекурсивно(!!!), желательно с примерами или...

Сколькими способами можно совершить поездку
1 задача Три дороги соединяют города А и В, четыре дороги соединяют В и С. Сколькими способами можно совершить поездку из А в С через В и...

7
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16137 / 11261 / 2888
Регистрация: 21.04.2018
Сообщений: 33,093
Записей в блоге: 2
01.11.2021, 19:51
Цитата Сообщение от edik_kayot Посмотреть сообщение
C#
53
54
                authUser.Name = AppStaffs.Name; //ОШИБКИ ТУТ
                authUser.Famil = AppStaffs.Famil; //ОШИБКИ ТУТ
А ЧТО вы тут пытаетесь сделать?

Добавлено через 1 минуту
edik_kayot, и очень советую ПОЛНОСТЬЮ очистить Code Behind.
Вынесите весь код в отдельный класс.
0
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 12
02.11.2021, 09:22  [ТС]
Пытаюсь заменить одну информацию, на другую, с этих строках
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16137 / 11261 / 2888
Регистрация: 21.04.2018
Сообщений: 33,093
Записей в блоге: 2
02.11.2021, 13:58
Цитата Сообщение от edik_kayot Посмотреть сообщение
Пытаюсь заменить одну информацию, на другую, с этих строках
На какую другую?
Откуда у вас эта другая информация?
Переменной по имени AppStaffs у вас нет.
А в типе AppStaffs у вас нет статических свойств.
0
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 12
02.11.2021, 17:56  [ТС]
Так сделаю по другому, вроде верно, но в поле textboxName пусто теперь
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string connStr = @"Data Source = itproger.db";
            using (SQLiteConnection db = new SQLiteConnection(connStr))
 
            {
                db.Open();
                if (textboxName.Text != "")
                {
                    string sql = $"SELECT name, famil FROM AppStaffs WHERE name=@name";
                    SQLiteCommand cmd = new SQLiteCommand(sql, db);
                    cmd.Parameters.AddWithValue("@name", int.Parse(textboxName.Text));
                    SQLiteDataReader da = cmd.ExecuteReader();
                    while (da.Read())
                    {
                        textboxName.Text = da["name"].ToString();
                        //textboxName.Text = da.GetValue(0).ToString();
                        //textboxfamil.Text = da.GetValue(1).ToString();
                    }
                
                this.Close();
                }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16137 / 11261 / 2888
Регистрация: 21.04.2018
Сообщений: 33,093
Записей в блоге: 2
02.11.2021, 18:04
Цитата Сообщение от edik_kayot Посмотреть сообщение
Так сделаю по другому, вроде верно, но в поле textboxName пусто теперь
Я же не знаю что у вас в БД.
И почему в считываете значение в цикле?
textboxName же может отобразить только одну строку.
Поставьте точку останова в методе и пройдите пошагово, посмотрите, что происходит на каждом шаге, какие значения у полей у переменных.
0
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 12
02.11.2021, 19:30  [ТС]
Я что-то врубится не могу, вообще идея такая, мне нужно вытащить конкретную строку, ту строку на которую я нажал кнопку "редактировать"

, и мне вылазит полностью информация которая содержится в строке бд(а она содержится), но у каждого отдельное поле (textbox).

Что делается не так, уже который день маюсь, направьте пожалуйста где надо исправить?
Поставьте точку останова проводил, доходит до окна с Карточкой сотрудника, и все, дальше переходы не активны
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16137 / 11261 / 2888
Регистрация: 21.04.2018
Сообщений: 33,093
Записей в блоге: 2
02.11.2021, 21:06
Цитата Сообщение от edik_kayot Посмотреть сообщение
Что делается не так, уже который день маюсь, направьте пожалуйста где надо исправить?
Уууу....
Главная проблема - нарушение архитектуры WPF приложения.
Как исправить? Создать хотя бы отдельную VM, а лучше ещё и Модель.
До тех пор пока вы будете использовать Code Behind у вас так и будет: То тут костыль подставили, то там, а пока их ставили - сломался ещё какой-то костыль и надо всё по новой.

Добавлено через 3 минуты
Цитата Сообщение от edik_kayot Посмотреть сообщение
Так сделаю по другому
Я вообще перестал понимать ваш код.
Вначале темы вы используете AppContecst - это же EF DbContext?

Если да, то с какого перепуга у вас в последнем коде появляются конекторы, адаптеры, команды?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2021, 21:06
Помогаю со студенческими работами здесь

Сколькими способами можно совершить путешествие?
Из Киева до Чернигова можно добраться пароходом, поездом, автобусом и самолетом; из Чернигова до Новгорода-Северского – параходом и...

Сколькими способами можно совершить поездку?
Три дороги соединяют города A и B, четыре дороги соединяют B и С. Сколькими способами можно совершить поездку из A в С через B и вернуться...

Редактирование БД sqlite
Уважаемые программисты, такая задача у меня надо базу данных sqlite, в приложение на c++ добавить, чтобы была возможность редактировать...

Как в SQLite можно получить last_insert_id?
Всем привет! Думаю над вопросом, как можно получить last_insert_id, работая с SQLite Будет ли работать //процедура добавления...

Редактирование записи sqlite
Есть такой код редактирования записи, но если я правильно понимаю, то нужно знать id редактируемой строки? А как ее узнать? with...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru