首页 > 解决方案 > 10 位数字的值未导入 SQLite

问题描述

所以,我不知道该尝试什么了,但这是我目前面临的问题:

我有一个 C# WPF 应用程序,它从服务器导入一个 .csv 文件,读取它,然后将其上传到 SQLite,因为添加了一个新表,所以我遇到了 2 列的一些问题,这些列都是数字的,并且包含 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
);

正如我之前所说,我也尝试过TEXTINTEGER,两者都不起作用。

标签: c#sqlite

解决方案


您将无法将值传递给2147483647INTEGER,因为它只是一个 4 字节的数字系统,但是您可以使用 8 字节的数字系统 BIGINT 来修复它。

有关更多信息,请参见此处https://docs.oracle.com/cd/E17952_01/mysql-5.0-en/integer-types.html


推荐阅读