Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/17: Рейтинг темы: голосов - 17, средняя оценка - 4.71
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
1

C# и база данных Access: БД не видна программе

08.02.2012, 16:45. Просмотров 3373. Ответов 30
Метки нет (Все метки)

Создала базу в Access. А из программы на C# не вижу фаил mdb. Получаю ошибку
"Could not find file 'C:\Fmanager.mdb'." Что я делаю не так? Спасибо!

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
//...........
        public string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Fmanager.mdb;Persist Security Info=False";
        public void SaveToAccessDB()
        {
            using (OleDbConnection con = new OleDbConnection(connectionstring))
            {
                con.Open();
                OleDbTransaction sqlTransact = con.BeginTransaction();
                OleDbCommand com = con.CreateCommand();
                com.Transaction = sqlTransact;
 
                try
                {
                    string query = string.Format("INSERT INTO EmailSettings (serverSmtp, potr,password,malFrom,mailTo) VALUES " +
                      "('{0}','{1}','{2}','{3}'.{4})", txtbxServerSMTP.Text, txtbPort.Text, txtxPass.Text, txtbxMailFrom.Text,txtxbMailTo.Text);
                    com.CommandText = query;
                    com.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                }
            }
 
        }
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 16:45
Ответы с готовыми решениями:

Как сделать, чтобы в программе на C#.NET открывалась база данных Access (*.mdb)?
Как сделать, чтобы в программе на C#.NET открывалась база данных Access (*.mdb)? Просто открывался...

Как сделать, чтобы в программе на VB.NET открывалась база данных Access (*.mdb)?
Как сделать, чтобы в программе на VB.NET открывалась база данных Access (*.mdb)? Ну просто...

База данных в программе
В программе источником данных служит sql база данных, и вот вопрос, если на компьютере пользователя...

База данных в программе
Здравствуйте.Я создал програмку,но в ней много папок и текстовых документов.Хочу сделать базу...

Не открывается база данных Access , пишет неразпознаваемый формат базы данных
Не открывается база данных Access , пишет неразпознаваемый формат базы данных,что делать

30
mrBlade
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
08.02.2012, 16:55 2
Если файловая система NTFS, то, возможно, отсутствуют права на доступ к файлу (правой кнопкой на файл -> свойства -> безопасность).
1
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
08.02.2012, 17:08  [ТС] 3
mrBlade, спасибо, что отвечаете! Самое страшное, что я вообше не вижу при поиске на компе мои фаил mdb, a Access его прекрасно открывает. Что за чертовщина? Я вообше сегодня 1 раз Access открыла
0
mrBlade
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
08.02.2012, 17:21 4
Тогда может его просто нет по указанному пути? Откройте файл в Access и посмотрите через него, какой путь у файла. В 2010-м надо выбрать вкладку Файл и вверху будет показан путь к нему. И проверьте, чтобы отображались скрытые файлы и папки.
0
08.02.2012, 17:21
nio
5990 / 3397 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.02.2012, 17:29 5
Цитата Сообщение от iva_a Посмотреть сообщение
Самое страшное, что я вообше не вижу при поиске на компе мои фаил mdb
Ну так по указанному адресу (C:\Fmanager.mdb) файл есть или нет? или его тоже не видно?
0
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
08.02.2012, 17:40  [ТС] 6
Access фаил открывает, в своиствах написано, что он есть прямо в c: и не скрытыи.В ехплорере я фаил не вижу. Опять забыла, подскажите как в Window7 посмотреть скрытые папки и файлы?
0
mrBlade
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
08.02.2012, 18:02 7
Цитата Сообщение от iva_a Посмотреть сообщение
Опять забыла, подскажите как в Window7 посмотреть скрытые папки и файлы?
Сервис - Параметры папок - Вид
1
Slamyar
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 10
08.02.2012, 23:38 8
Если у вас аксес выше 2003, то он вероятно сохраняет файл в формате .accbd, проверьте, какой формат у базы
0
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 11:05  [ТС] 9
Спасибо всем, кто отвечал! Вопрос вдогонку. Теперь получаю ошибку "Syntax error in INSERT INTO statement" А вот сам код. В чем ошибка?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//...
  try
                {
                    string query = "insert into Config (serverSmtp , potr, login, password, malFrom, mailTo) values (" + this.txtbxServerSMTP.Text + 
                        " ," + this.txtbPort.Text + 
                        " ," + this.txtxbLogin.Text + " ," + this.txtxPass.Text +" ," + this.txtbxMailFrom.Text+" ," + this.txtxbMailTo.Text +");";
                    MessageBox.Show(query);
                    com.CommandText = query;
                    int temp = com.ExecuteNonQuery();
                    if (temp > 0)
                    {
                        MessageBox.Show("Record Added");
                    }
                    else
                    {
                        MessageBox.Show("Record not Added");
                    }
                    con.Close();
//...
                }
0
andrew_w2k
328 / 328 / 90
Регистрация: 04.03.2010
Сообщений: 648
09.02.2012, 11:22 10
стуктуру таблицы и данные текстбоксов в студию)
0
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 11:43  [ТС] 11
Сделала вот так
C#
1
2
3
                    string query = "INSERT INTO Config ([ID], [serverSmtp], [port], [login], [password], [malFrom], [mailTo]) values (" + "1 " + " , "+ this.txtbxServerSMTP.Text + 
                        " , " + this.txtbPort.Text + 
                        " , " + this.txtxbLogin.Text + " , " + this.txtxPass.Text +" , " + this.txtbxMailFrom.Text+" , " + this.txtxbMailTo.Text +")";
Теперь получаю ошибку "No value given for one or more required parameters"
Вот сама база, состоящая (пока) из 1 таблицы
0
Вложения
Тип файла: rar RemmManager.rar (9.4 Кб, 10 просмотров)
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 13:53  [ТС] 12
Заменила запрос и строку. И все та же ошибка Google пока не помог. Help!!!
C#
1
2
3
4
5
6
7
8
                    string query = @"UPDATE Config SET [serverSmtp] = @param1, [port] = @param2, [login] = @param3,
                                                       [password] = @param4 ,[malFrom] =  @param5,[mailTo] = @param6";
                    com.Parameters.Add("@param1", OleDbType.VarChar, 50).Value = txtbxServerSMTP.Text;
                    com.Parameters.Add("@param2", OleDbType.VarChar, 50).Value = txtbPort.Text;
                    com.Parameters.Add("@param3", OleDbType.VarChar, 50).Value = txtxbLogin.Text;
                    com.Parameters.Add("@param4", OleDbType.VarChar, 50).Value = txtxPass.Text;
                    com.Parameters.Add("@param5", OleDbType.VarChar, 50).Value = txtbxMailFrom.Text;
                    com.Parameters.Add("@param6", OleDbType.VarChar, 50).Value = txtxbMailTo.Text;
Добавлено через 1 час 35 минут
Продолжаю, может кому интересно
Вообщем, вот так не выдает ошибки
C#
1
2
3
4
string query = "INSERT INTO Config ([serverSmtp], [port], [login], [password], [mailFrom], [mailTo]) values ('" + 
                        this.txtbxServerSMTP.Text + "','" + this.txtbPort.Text + "','" +
                        this.txtxbLogin.Text + "','" + this.txtxPass.Text + "','" +
                        this.txtbxMailFrom.Text + "','" + this.txtxbMailTo.Text + "');"
Подскажите, пожалуйста как теперь в Access проверить, что строки добавились? потому, что , если я просто открываю Access, свою базу и таблицу Config, то добавленных строк я не вижу И еше, если моя таблица пустая В первыи раз запускаю программу на c# с формои, где заполняю нужные данные, то для заполнения таблицы нужен INSERT,верно? А во второи раз мне надо перезаписать данные, то получается, что UPDATE. А как я узнаю какои номер первичного ключа? Спасибо!
0
mrBlade
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
09.02.2012, 14:41 13
Итак Таблица простая, проблем никаких не должно быть. Значение счётчика (ID) INSERT'ом вставлять не нужно, он назначается сам. Первый раз надо естественно делать INSERT, потом, если перезаписать - UPDATE. Номер первичного ключа -
SQL
1
SELECT ID FROM Config WHERE [условия выборки счётчика]
. Либо
SQL
1
SELECT MAX(ID) FROM Config
, если строка там одна. Проверить работу можно просто открыв базу а Access и посмотрев значения таблицы.
1
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 14:50  [ТС] 14
mrBlade, во 1-х - спасибо! А во-2- все делаю, как Вы говорите, но только открываю таблицу, а там- пусто, хотя программа ошибок не дает. Вот полныи код пока только INSERT
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
      public void SaveToAccessDB()
        {
            //get connection string to ACCESS DB - RemmManager.mdb
           // //public string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Irena\Documents\RemmManager.mdb;Persist Security Info=False";
 
            System.Configuration.AppSettingsReader cfgR = new System.Configuration.AppSettingsReader();
            connectionstring = (string)cfgR.GetValue("connectionstring", typeof(System.String));
 
            using (OleDbConnection con = new OleDbConnection(connectionstring))
            {
                con.Open();
                OleDbTransaction sqlTransact = con.BeginTransaction();
                OleDbCommand com = con.CreateCommand();
                com.Transaction = sqlTransact;
 
                try
                {                 
                    string query = "INSERT INTO Config ([serverSmtp], [port], [login], [password], [mailFrom], [mailTo]) values ('" + 
                        this.txtbxServerSMTP.Text + "','" + this.txtbPort.Text + "','" +
                        this.txtxbLogin.Text + "','" + this.txtxPass.Text + "','" +
                        this.txtbxMailFrom.Text + "','" + this.txtxbMailTo.Text + "');";
 
                  /*  string query = @"UPDATE Config SET [serverSmtp] = @param1, [port] = @param2, [login] = @param3,
                                                       [password] = @param4 ,[malFrom] =  @param5,[mailTo] = @param6 where [ID] = 3";
                    com.Parameters.Add("@param1", OleDbType.VarChar, 50).Value = txtbxServerSMTP.Text;
                    com.Parameters.Add("@param2", OleDbType.VarChar, 50).Value = txtbPort.Text;
                    com.Parameters.Add("@param3", OleDbType.VarChar, 50).Value = txtxbLogin.Text;
                    com.Parameters.Add("@param4", OleDbType.VarChar, 50).Value = txtxPass.Text;
                    com.Parameters.Add("@param5", OleDbType.VarChar, 50).Value = txtbxMailFrom.Text;
                    com.Parameters.Add("@param6", OleDbType.VarChar, 50).Value = txtxbMailTo.Text; */
 
 
                    MessageBox.Show(query);
                    com.CommandText = query;
                    int temp = com.ExecuteNonQuery();
                    if (temp > 0)
                    {
                        MessageBox.Show("Record Added");
                    }
                    else
                    {
                        MessageBox.Show("Record not Added");
                    }
                    con.Close();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }
0
nio
5990 / 3397 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
09.02.2012, 15:07 15
Цитата Сообщение от iva_a Посмотреть сообщение
как Вы говорите, но только открываю таблицу, а там- пусто, хотя программа ошибок не дает
А это распространенная проблема с локальными БД. Прикол в том, что в папке проекта лежит пустая БД. По умолчанию у нее в свойствах стоит значение Copy Always, поэтому при компиляции она каждый раз копируется в папку с exe(bin/debug) и перетирает ранее заполненную БД. Ну и читаешь ты наверное БД из папки проекта, а не из bin/debug
0
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 15:54  [ТС] 16
Не поняла, так какую же базу мне открывать? МОжно подробнее?
0
mrBlade
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
09.02.2012, 16:11 17
Мне тоже не понятно, что и куда копируется по умолчанию, не сталкивался с таким. Смотреть нужно в строку подключения к базе, а именно на Data Source. Судя по Вашему коду, это свойство "connectionstring". Если взять конкретный пример из закомментированной строки выше, то это "C:\Users\Irena\Documents\RemmManager.mdb".
0
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 16:14  [ТС] 18
Да, и вот эта база почему-то пустая, хотя мои код работает и я получаю сообшение, что строка добавилась!
0
mrBlade
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
09.02.2012, 16:28 19
Тогда лучше дождаться пояснения уважаемого модератора Могу лишь предположить, что где-то в свойствах проекта есть какие-то настройки насчёт этой базы. Проверьте папку проекта и bin\debug, bin\release (а ещё лучше весь диск C) на наличие такого же файла БД.
0
iva_a
157 / 129 / 23
Регистрация: 02.01.2011
Сообщений: 913
09.02.2012, 16:33  [ТС] 20
Что-то я вообше не могу наити свойство Copy Always! nio, помогите разобраться, пожалуйста!

Добавлено через 3 минуты
mrBlade, поискала на всем компе база только 1, может надо искать копию в процессе работы с#-й программы? Странно...
0
09.02.2012, 16:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2012, 16:33

не видна Sql-база на ноутбуке
база крутится на sql, все компы-башни нормально ее подключали. 2 варианта операционной системы -...

База данных Access
Помогите связать базу с Visual Basic и сделать кнопки добавление,удаление и редактировнаие!

База данных в Access!
Добрый день! Очень нужна помощь в создании базы данных. Дело в том, что ни разу в жизни не работа...


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

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

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