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

Npgsql.npgsqlexception: INSERT содержит больше выражений, чем целевых колонок

24.01.2015, 02:16. Просмотров 1056. Ответов 0
Метки нет (Все метки)

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

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
//метод записи в бд.
 private void AddtoDb(double[] coords,string folder,string name)
 
        {
           
            try
            {
            ConnectionSettings settings=new ConnectionSettings();
            
            string connection=settings.Configuration();
            
            if (connection != "")
            {
                
                
                    NpgsqlConnection conn = new NpgsqlConnection(connection);
                    conn.Open();
                  string sql = "INSERT INTO parts (height, length, width, path, name) VALUES (" + coords[0].ToString() + "," + coords[1].ToString() + "," + coords[2].ToString() + "," + "'" + folder + "'" + "," + "'" + name + "'" + ")";
 
                    NpgsqlCommand command = new NpgsqlCommand(sql, conn);
                    command.ExecuteNonQuery();//на эту строку среагировал ексепшин.
                    conn.Close();
                         
 
            }
            else MessageBox.Show("Make configuration database, on the tab Configuration.");
      
 
            }
                catch(Exception e)
            { 
                    MessageBox.Show(e.ToString());
                }
 
            
            
        }
 
       public void AddDetail()
        {
            try
            {
                swModel = (ModelDoc2)swApp.ActiveDoc;
                PartDoc doc = (PartDoc)swModel;
                double[] coords = GetDimFromPArt(doc);
                filename = swModel.GetTitle();
                ConnectionSettings settings = new ConnectionSettings();
                if ((wayFolder = settings.getFolder()) != "")
                {
                    AddtoDb(coords,wayFolder,filename);
                    string newName = wayFolder + "\\" + filename + ".sldprt";
                    if (CheckFile(wayFolder+"\\", newName))
                    {
                        System.IO.File.Delete(newName);
                        return;
                    }
                    
                    swModel.SaveAs(newName);
                     
                }
                else MessageBox.Show("Make configuration database, on the tab Configuration.");
 
               /* StreamWriter str = new StreamWriter("ttt.txt");
                for (int i = 0; i < 3; i++)
                {
                    str.WriteLine(coords[i]);
                }
                str.Close();*/
 
            }
            catch(Exception e)
            { 
                MessageBox.Show(e.ToString());
                
            }
}
//метод получения габарито
          public double[] GetDimFromPArt(PartDoc doc)
        {
            X_max = MinDouble;
            X_min = MaxDouble;
            Y_max = MinDouble;
            Y_min = MaxDouble;
            Z_max = MinDouble;
            Z_min = MaxDouble;
            double[] coords = new double[3];
            Double[] BoxFeatureDblArray = (Double[])((PartDoc)swModel).GetPartBox(true);
            
            X_max = sup.GetMax(BoxFeatureDblArray[0], BoxFeatureDblArray[3], X_max);
            X_min = sup.GetMin(BoxFeatureDblArray[0], BoxFeatureDblArray[3], X_min);
            Y_max = sup.GetMax(BoxFeatureDblArray[1],BoxFeatureDblArray[4],Y_max);
            Y_min = sup.GetMin(BoxFeatureDblArray[1], BoxFeatureDblArray[4], Y_min);
            Z_max = sup.GetMax(BoxFeatureDblArray[2], BoxFeatureDblArray[5], Z_max);
            Z_min = sup.GetMin(BoxFeatureDblArray[2], BoxFeatureDblArray[5], Z_min);
 
            coords[0] = Math.Round(Math.Abs((X_max * 1000.0) - (X_min * 1000.0)), 3);
            coords[1] = Math.Round(Math.Abs((Y_max * 1000.0) - (Y_min * 1000.0)), 3);
            coords[2] = Math.Round(Math.Abs((Z_max * 1000.0) - (Z_min * 1000.0)), 3);
            Array.Sort(coords);
            Array.Reverse(coords);
            return coords;
        }
скрипт таблицы
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE parts
(
  height DOUBLE PRECISION,
  LENGTH DOUBLE PRECISION,
  width DOUBLE PRECISION,
  path text,
  name text,
  id serial NOT NULL,
  CONSTRAINT parts_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE,
  autovacuum_enabled=TRUE
);
ALTER TABLE parts
  OWNER TO postgres;
С PosgreSQL работаю впервые.
Буду благодарен если кто-то укажет на ошибку.
Спасибо.

Добавлено через 5 минут
Я понимаю что я в БД записываю больше чам нужно, но не пойму в чем ошибка.

Добавлено через 4 минуты
Нашел причину. Все работает. Я передавал габариты в виде 10,424 а надо 10.424 .
Так работает!
C#
1
string sql = "INSERT INTO parts (height, length, width, path, name) VALUES (" + coords[0].ToString().Replace(',', '.') + "," + coords[1].ToString().Replace(',', '.') + "," + coords[2].ToString().Replace(',', '.') + "," + "'" + folder + "'" + "," + "'" + name + "'" + ")";
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2015, 02:16
Ответы с готовыми решениями:

Почему scanf содержит на один больше символов, чем в него ввели?
Почему при вводе числа N, затем N символов, вывод - (N-1) символ? #include...

DataGridView - указанная строка содержит больше ячеек, чем число столбцов
Всем здорова. подскажите ребят, как можно добавить в ячейку ну к примеру тот же...

Ошибка в SQL: Список выбора для инструкции INSERT содержит меньшее число элементов, чем список вставки
Всем привет. возникла проблема с заполнением таблицы из других таблиц. USE ...

Определить есть ли в массиве рядок, который содержит больше позитивных элементов, чем негативных
Доброй ночи, форумчане. Помогите, пожалуйста, с небольшой задачкой по...

Двумерные массивы.Определить есть ли строка,которая содержит больше положительных,чем отрицательных элементов
Дан двумерный массив размерностью NxM,заполненный случайными...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2015, 02:16

Если строка из загруженного файла содержит больше, чем 50 символов, то нужно разделить её на две части
Помогите дополнить программу. В программу загрузить text файл, обработать его и...

Создать файл, каждая строка которого в первой половине содержит больше отрицательных чисел, чем во второй
Дан числовой текстовый файл. Создать новый текстовый файл, каждая строка...

Проверить с помошью регулярных выражений, что строка содержит только цифры
как проверить с помошью регулярных выражений, что строка содержит только цифри\...


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

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

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