Значения с 10 цифрами, не импортируемые в SQLite - PullRequest
0 голосов
/ 04 октября 2019

Итак, я понятия не имею, что попробовать, но вот проблема, с которой я сейчас сталкиваюсь:

У меня есть приложение C # WPF, которое импортирует файл .csv с сервера, читает егои затем загружает его в SQLite, так как при добавлении новой таблицы я сталкиваюсь с некоторыми проблемами с двумя столбцами, как числовыми, так и содержащими от 8 до 10 цифр. Ячейки, содержащие 8 и 9 цифр, не имеют проблем, но когда я пытаюсь загрузить 10 цифр, я получаю пустую ячейку в SQLite.

Самое неприятное в этом то, что нет сообщения об ошибке. Я пытался сохранить в SQLite в виде чисел, целых чисел, текста, ... Ничего не работает здесь.

Это мой код после открытия файла .csv:

//The code before this part is basically using Jet.OleDb, connect to the file and create a DataSet and DataTable, these contain the right values

DataSet ds = new DataSet("CSVFile");
adapter.Fill(ds);
var dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows) {        
    var eDel = dr[(0)].ToString();
    var eRef = dr[(1)].ToString();
    cmd.CommandText = "INSERT INTO delInc (DELIVERY,REFERENCEDOC) VALUES (@cDel,@cRef)";
    cmd.Parameters.AddWithValue("@cDel", eDel);
    cmd.Parameters.AddWithValue("@cRef", eRef);
    }
    cmd.ExecuteNonQuery();  

В моем файле .csv у меня есть:

DELIVERY    | REFERENCEDOC
121859657   | 59151654
121859658   | 59183792
8185619953  | 7719802361
8185619954  | 380184551

Но в SQLite я вижу только:

DELIVERY    | REFERENCEDOC
121859657   | 59151654
121859658   | 59183792
            |   
            | 380184551

Это мой DDL:

CREATE TABLE delInc 
(
    DELIVERY NUMERIC,
    REFERENCEDOC NUMERIC
);

КакЯ уже говорил, я также попробовал это с TEXT и INTEGER , оба не работают.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

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

0 голосов
/ 04 октября 2019

вы не сможете получить значения свыше 2147483647 в INTEGER, так как это всего лишь 4-битная система счисления, однако вы можете исправить это с помощью BIGINT, которая является 8-байтной системой счисления.

Смотрите здесь для более https://docs.oracle.com/cd/E17952_01/mysql-5.0-en/integer-types.html

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