Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / создание таблички OleDbCommand вызывает ошибку / 12 сообщений из 12, страница 1 из 1
05.11.2008, 07:37
    #35634082
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Всем доброго времени суток! Пытаюсь создать табличку в DBF.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
            OleDbCommand cmd = new OleDbCommand(szCmd, conn);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

Допустим создаем таблтчку из 15 полей типа char(254), все нормально. А если вот 16 полей такого типа, то говорит, что не вмещается уже это поле.

Мне надо от 30 до 50 полей создавать, конечно некоторые поля и по 50 символов, но всеравно, думаю эта проблема решается как то.

Вот запрос на создание

Код: plaintext
CREATE TABLE TABLE1.DBF (Name1 char(254),Name2 char(254),Name3 char(254),Name4 char(254),Name5 char(254),Name6 char(254),Name7 char(254),Name8 char(254),Name9 char(254),Name10 char(254),Name11 char(254),Name12 char(254),Name13 char(254),Name14 char(254),Name15 char(254),Name16 char(254))

Я пока разбираюсь с возможностями dbf'a.


Вот весь код для создания:

Код: plaintext
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.
 private void button1_Click(object sender, EventArgs e)
        {
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + ";Extended Properties=dBASE IV;User ID=Admin;Password=";

            OleDbConnection conn = new OleDbConnection(connStr);
            try
            {
                conn.Open();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("не удалось соединиться\n" + ex.Message);
                return;
            }

            try { System.IO.File.Delete("TABLE1.DBF"); }
            catch { }

            string szCmd = "CREATE TABLE TABLE1.DBF (";
            int N=16;
            for (int i = 1; i <= N; i++)
            {
                szCmd += "Name" + i.ToString() + " char(254),";
            }
            szCmd = szCmd.Replace("Name" + N.ToString() + " char(254),", "Name" + N.ToString() + " char(254))");
            conn.Open();
            OleDbCommand cmd = new OleDbCommand(szCmd, conn);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


может чтото не то в строке подключения...?? помогите пожалуйста с этим разобраться..
...
Рейтинг: 0 / 0
05.11.2008, 07:39
    #35634085
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Ошибка:

Код: plaintext
Поле не помещается в записи.
...
Рейтинг: 0 / 0
05.11.2008, 07:45
    #35634088
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
еще вот может надо подключаться к dBase V??
Прросто вижу в конфигурации поставщиков ODBC таку картинку:
...
Рейтинг: 0 / 0
05.11.2008, 08:39
    #35634137
Ъй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Khusainov_Heckfyможет чтото не то в строке подключения...?? помогите пожалуйста с этим разобраться..
Курить спецификацию на используемый ODBC-драйвер - запросто может быть, что это какое-то из его ограничений.
P.S. Name1...Name16, ПМСМ, нездорово попахивает кривым дизайном базы. Может, ст о ит пересмотреть его?
...
Рейтинг: 0 / 0
05.11.2008, 09:39
    #35634212
TeXpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Khusainov_HeckfyПытаюсь создать табличку в DBF... Руслан, не парься, пиши (и читай) DBF напрямую, без всяких драйверов. Тут (третий с конца пост, автор -- Delirium ) найдёшь класс, где есть методы для создания, чтения и присобачивания. Только размеры полей надо подогнать под себя -- я, например, сделал hash-таблицу (поле-длина), и скармливаю как ещё один параметр. Тьфу-тьфу-тьфу, прекрасно пашет
...
Рейтинг: 0 / 0
05.11.2008, 18:32
    #35635876
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
ЪйKhusainov_Heckfyможет чтото не то в строке подключения...?? помогите пожалуйста с этим разобраться..
Курить спецификацию на используемый ODBC-драйвер - запросто может быть, что это какое-то из его ограничений.
P.S. Name1...Name16, ПМСМ, нездорово попахивает кривым дизайном базы. Может, ст о ит пересмотреть его?

Name1.....Name16 это для примера))) естесственно там поля необходимые уже в ТЗ подготовлены!)) И будут другие.
...
Рейтинг: 0 / 0
06.11.2008, 05:19
    #35636418
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
TeXpertKhusainov_HeckfyПытаюсь создать табличку в DBF... Руслан, не парься, пиши (и читай) DBF напрямую, без всяких драйверов. Тут (третий с конца пост, автор -- Delirium ) найдёшь класс, где есть методы для создания, чтения и присобачивания. Только размеры полей надо подогнать под себя -- я, например, сделал hash-таблицу (поле-длина), и скармливаю как ещё один параметр. Тьфу-тьфу-тьфу, прекрасно пашет


Спасибо, попытаюсь разобраться с этим)
...
Рейтинг: 0 / 0
06.11.2008, 05:56
    #35636423
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Вот тут идет строчка

Код: plaintext
1.
// Формат dBASE III 2.0
   byte[] buffer = new byte[]{0x03, 0x63, 0x04, 0x04}; // Заголовок  4 байта

можно пример как в dBase IV или V?
...
Рейтинг: 0 / 0
06.11.2008, 06:34
    #35636439
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Ошибка синтаксиса FROM пишет, когда пытается данные из нее селектом получить.
SELECT *FROM TABLE.DBF
...
Рейтинг: 0 / 0
06.11.2008, 06:55
    #35636446
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Дело в том, что я в ASP создаю на серваке файл DBF, а стороние разработчики должны на клиенте уже получть это DBF файл, и делать с ним уже что надо. Вот только я не знаю, этот файл им подойдет ли... ну а так ссылка очень хороша!)

Командером открыл созданную табличку, написано что провайдер у нее FoxPro
...
Рейтинг: 0 / 0
06.11.2008, 06:56
    #35636447
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
А как сделать чтоб был не FoxPro а dBase?

Я так понимаю надо чтото в заголовке файла менять, только что...???
...
Рейтинг: 0 / 0
06.11.2008, 07:10
    #35636453
Khusainov_Heckfy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблички OleDbCommand вызывает ошибку
Все, проблему решил!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
// Создаю таблицу
            System.IO.File.Delete(Folder + DT.TableName+".DBF");
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath +
                            ";Extended Properties=dBASE 5.0;User ID=Admin;Password=";

            OleDbConnection conn = new OleDbConnection(connStr);
            try
            {
                conn.Open();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("не удалось соединиться\n" + ex.Message);
                return;
            }
            conn.Open();
            OleDbCommand cmd = new OleDbCommand("CREATE TABLE "+ DT.TableName + ".DBF (SSS char(1))", conn);
            cmd.ExecuteNonQuery();
            conn.Close();

            System.IO.FileStream FS = new System.IO.FileStream(Folder + DT.TableName + ".DBF", System.IO.FileMode.OpenOrCreate);
            // Формат dBASE III 2.0


Модератор: Тема перенесена из форума "C#.NET".
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / создание таблички OleDbCommand вызывает ошибку / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]