Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2015, 09:18   #1
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию Обновление таблицы БД SqlLite - C# WPF

Доброго времени суток. У меня стоит задача изменять значения в БД через форму listView используя sqlLite. Отобразить данные мне удалось, но вот поменять значения не получается.
mrE3-WrTGJM.jpg

Если не трудно можете объяснить как мне обновлять БД через интерфейс программы. Или простой пример

Работаю через system.data.sqlite.org провайдер. У меня реализован сбор данных python скриптами.

Спасибо!
Notan1310 вне форума Ответить с цитированием
Старый 08.10.2015, 09:35   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Отобразить данные мне удалось, но вот поменять значения не получается. сли не трудно можете объяснить как мне обновлять БД через интерфейс программы.
Ну по-разному можно, от просто вызова SQL самому (при изменении данных) до биндинга к колекции полученной с помощью Entity Framework (тогда просто SaveChanges надо вызывать для сохранения).

Как именно отображение реализовали?

А причем тут питон? IronPython что ли?
Что такое "сбор данных" и как оно относится к вопросу?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.10.2015, 09:55   #3
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

Код:
    public class DataService : IDataService
    {

        const string databaseName = @"Data/newPosts.db";


        public void GetData(Action<List<Post>, Exception> callback)
        {
    
            // Use this to connect to the actual data service
            
            SQLiteConnection connection = new SQLiteConnection(string.Format("Data Source={0};", databaseName));
            connection.Open();
            SQLiteCommand commandGetAllTable = new SQLiteCommand(" SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;", connection);
            SQLiteDataReader readerTable = commandGetAllTable.ExecuteReader();
            List<Post> posts = new List<Post>();
            foreach (DbDataRecord record in readerTable)
            {
                string tableName = record["name"].ToString();

                SQLiteCommand commandGetAllPost = new SQLiteCommand("SELECT * FROM '"+ tableName +"';", connection);
                SQLiteDataReader reader = commandGetAllPost.ExecuteReader();

                
                foreach (DbDataRecord recordPost in reader)
                {
                    try
                    {
                        string id  = recordPost["id"].ToString();
                        string title = recordPost["Title"].ToString();
                        string href = recordPost["Href"].ToString();
                        string forumName = tableName;
                        posts.Add(new Post(Guid.NewGuid(), title, href, forumName, id));
                    }

                    catch (System.IndexOutOfRangeException e)
                    {
                        using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"errorLog.txt", true))
                        {
                            file.WriteLine(e.StackTrace);
                        }
                    }
                }

            }
            
            /*

            List<Post> posts = new List<Post>()
            {
                new Post(Guid.NewGuid(), "Title1", "Href1"),
                new Post(Guid.NewGuid(), "Title2", "Href2"),
                new Post(Guid.NewGuid(), "Title3", "Href3")
            };
              */

            callback(posts, null);
             
        }



    }
И отображение
Код:
        <ListView Margin="10,10,10,460" Height="400" 
    ItemsSource="{Binding PostList}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Id" Width="100" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <CheckBox IsChecked="{Binding Path=Value}" Content="{Binding Path=IdTable}" Width="70" Name="ckBox1"/>
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Title" Width="500">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Path=Title}" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Href}" 
                  Header="Link" Width="100"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=ForumName}" 
                  Header="ForumName" Width="100"/>
                </GridView>
            </ListView.View>
        </ListView>
Цитата:
А причем тут питон? IronPython что ли?
Это я к тому что данные собираются в БД SQLite python скриптами и мне бы нужно чтобы поддержка SqlLite была. Извините быть может я не правильно объясняю. Есть просто идея, но ее реализация выглядит расплывчато из-за пробелов в знаниях.
Notan1310 вне форума Ответить с цитированием
Старый 08.10.2015, 10:11   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А как БД выглядит? Там несколько таблиц с одинаковыми полями?
По-моему проще было сделать одну таблицу и добавить туда поле forumName (ну точнее поле лучше делать не в самой таблице, а сделать отдельную таблицу со списком форумов и в ту таблицу просто добавить поле с номером, потом с помощью JOIN объединять)

Тогда было бы проще стандартными средствами сделать биндинг с возможностью изменения данных. (DataSet/DataTable и т.п. из стандартного ADO.NET или Entity Framework)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.10.2015, 14:34   #5
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

Стал отталкиваться от EntityFramework. Спасибо!
Notan1310 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление таблицы из Поля govorun1 Microsoft Office Access 1 27.01.2015 15:59
WPF/ Обновление ItemsSource-а ShoGUN WPF, UWP, WinRT, XAML 0 02.06.2014 18:34
Обновление сводной таблицы danichca Microsoft Office Excel 4 22.02.2013 13:10
Обновление таблицы a1n4ik Microsoft Office Access 0 02.09.2012 15:45
Обновление таблицы RedScreenOfLife Общие вопросы по Java, Java SE, Kotlin 8 07.06.2011 00:27