Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# и базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
ВераВ
0 / 0 / 2
Регистрация: 02.04.2015
Сообщений: 18
#1

Ошибка "база данных только для чтения" в установленном приложении - C#

20.05.2016, 14:05. Просмотров 164. Ответов 4
Метки нет (Все метки)

В VS при нажатии на кнопку Запуск, приложение работает без ошибок, удаляет и сохраняет записи.
Создала инсталляционный пакет с помощью InstallShield, установила. При выполнении команды Сохранить "виснет", при запуске отладки написал "база данных только для чтения". Помогите разобраться, пожалуйста.
Код графического интерфейса в 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<Page x:Class="последний2.PageEmployee"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
          mc:Ignorable="d" 
      d:DesignHeight="400" d:DesignWidth="500"
    Title="PageEmployee" Loaded="Page_Loaded">
 
    <StackPanel Margin="3" Background="{StaticResource BackgroundWindowResource}">
       
        <Menu>
            <MenuItem Header="Действие">
                <MenuItem Header="Сохранить" Click="updateButton_Click"></MenuItem>
                <Separator></Separator>
                <MenuItem Header="Удалить" Command="Delete"></MenuItem>
            </MenuItem>
            <MenuItem Header="Справка" Click="MenuHelp_Click"></MenuItem>
        </Menu>
 
        <ToolBar Name="ToolBar1" Margin="3">
 
            <Button x:Name="save" ToolTip="Сохранить" Margin="5,2,5,2" Click="updateButton_Click" >
                <Image Source="Images/save.jpg" />
            </Button>
 
            <Button Name="delete" ToolTip="Удалить" Margin="5,2,5,2" Click="deleteButton_Click">
                <Image Source="Images/delete.jpg" />
            </Button>
 
        </ToolBar>
 
        <TextBlock Margin="5" >Список сотрудников</TextBlock>
        <DataGrid AutoGenerateColumns="False" Name="EmployeeGrid" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Surname}" Header="Фамилия"/>
                <DataGridTextColumn Binding="{Binding Name}" Header="Имя"/>
                <DataGridTextColumn Binding="{Binding Patronymic}" Header="Отчество"/>
                <DataGridTextColumn Header="Должность"/>
                <DataGridTemplateColumn Header="Дата рождения"
                 CellTemplate="{StaticResource DateTemplate}" 
                 CellEditingTemplate="{StaticResource EditingDateTemplate}"/>
                <DataGridTextColumn Binding="{Binding Telephone}" Header="Телефон"/>
                <DataGridTextColumn Binding="{Binding Email}" Header="Электронная почта"/>
            </DataGrid.Columns>
        </DataGrid>
 
    </StackPanel>
 
 
</Page>
Код подключения и все обработчики кнопок в файле кода c#:
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
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
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 последний2
{
    /// <summary>
    /// Логика взаимодействия для PageEmployee.xaml
    /// </summary>
 
    public partial class PageEmployee : Page
    {
        string connectionString;
        SqlDataAdapter adapter;
        DataTable employeeTable;
        
 
        public PageEmployee()
        {
            InitializeComponent();
            // получаем строку подключения из app.config
            connectionString = ConfigurationManager.ConnectionStrings["TitlePersonEntities"].ConnectionString;
        }
 
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            string sql = "SELECT * FROM Employee";
            employeeTable = new DataTable();
            SqlConnection connection=null;
            try
            {
                connection = new SqlConnection(connectionString);
                SqlCommand command = new SqlCommand(sql, connection);
                adapter = new SqlDataAdapter(command);
                connection.Open();
                EmployeeGrid.IsReadOnly = false;
                adapter.Fill(employeeTable);
               
                EmployeeGrid.ItemsSource = employeeTable.DefaultView;
               
            } 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
        }
        private void MenuHelp_Click(object sender, RoutedEventArgs e)      
  {
            try
            {
                Process SysInfo = new Process();
                SysInfo.StartInfo.ErrorDialog = true;
                SysInfo.StartInfo.FileName = "disheshelp.chm";
                SysInfo.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
            private void UpdateDB()
        {
            SqlCommandBuilder comandbuilder = new SqlCommandBuilder(adapter);
            EmployeeGrid.IsReadOnly = false;
            adapter.Update(employeeTable);
            
        }
               private void updateButton_Click(object sender, RoutedEventArgs e)
        {
            UpdateDB();
        }
                private void deleteButton_Click(object sender, RoutedEventArgs e)
        {
            if (EmployeeGrid.SelectedItems != null)
            {
                for (int i = 0; i < EmployeeGrid.SelectedItems.Count; i++)
                {
                    DataRowView datarowView = EmployeeGrid.SelectedItems[i] as DataRowView;
                    if (datarowView != null)
                    {
                        DataRow dataRow = (DataRow)datarowView.Row;
                        dataRow.Delete();
                    }
                }
            }
           
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2016, 14:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка "база данных только для чтения" в установленном приложении (C#):

Ошибка при работе с DataTable - "Столбец доступен только для чтения"
День добрый всем. Решил я создать для себя небольшой класс, со всякими часто...

Ошибка "База данных уже существует". При отсутствии базы данных
День добрый! Помогите, пожалуйста, разобраться с проблемой. Есть довольно...

Ошибка сохранения данных "Ошибка преобразования значения varchar "id" в тип данных int"
private void btnSaveSettings_Click(object sender, EventArgs e) { ...

Обновление данных и ошибка "Является "тип", но используется как "переменная"
Код кнопки обновить ,базу данных (button1) пишет ошибку ...

Ошибка "Попытка чтения или записи в защищенную память" во время выполнения метода DataAdapter.Fill
Делаю так: using (OdbcConnection _conn = new OdbcConnection(_connectionStr) {...

Ошибка в приложении "Невозможно найти устанавливаемый ISAM"
При выполнение следующего кода вылезает ошибка: using System; using...

4
OwenGlendower
Супер-модератор
Эксперт .NET
8767 / 7771 / 3323
Регистрация: 17.03.2014
Сообщений: 15,281
Записей в блоге: 1
20.05.2016, 14:24 #2
ВераВ, как выглядит строка подключения? Под каким пользователем (админ или обычный юзер) запускается программа?
0
ВераВ
0 / 0 / 2
Регистрация: 02.04.2015
Сообщений: 18
20.05.2016, 16:10  [ТС] #3
XML
1
2
3
4
<connectionStrings>
   <add name="TitlePersonEntities"
 connectionString= "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\TitlePerson.mdf;Integrated Security=True;Connect Timeout=30"/>
  </connectionStrings>
Добавлено через 11 минут
программа запускается под обычным юзером
0
OwenGlendower
Супер-модератор
Эксперт .NET
8767 / 7771 / 3323
Регистрация: 17.03.2014
Сообщений: 15,281
Записей в блоге: 1
20.05.2016, 16:22 #4
ВераВ, и приложение как я понимаю установлено в Program Files? Пользователи не имеет права на запись в этот каталог. Переделайте программу установки так чтобы файл базы данных копировался в профиль пользователя.
1
ВераВ
0 / 0 / 2
Регистрация: 02.04.2015
Сообщений: 18
24.05.2016, 10:57  [ТС] #5
Спасибо!!! Так переделать программу, чтобы только база данных копировалась в профиль пользователя не удалось.
Удалось только установить программу в профиль пользователя (или на диск D). Все заработало! Спасибо!
0
24.05.2016, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 10:57
Привет! Вот еще темы с решениями:

Ошибка при обновлении данных "Для обновления требуется действительный UpdateCommand"
Народ, помогите! Непонятно почему, при обновлении базы данных вдруг появилось...

Многопоточный доступ к файлу и ошибка "Поток был недоступен для чтения"
Здравствуйте. Решил потренироваться в многопоточности, но почему-то все равно...

SOCKS сервер для принятия данных с браузера. Что означают команды "GET", "POST"
Нужно сделать socks сервер. Создал TCP сервер, принимаю все данные с...

Ошибка CS0102 Тип "PHONE" уже содержит определение для "ID"
Решил построить отчет, но при запуске выводит ошибку.


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

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

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