大家好,我的数据库结构如下

 Field        Type
FileHeader    longblob
BatchHeader   longblob
Entry         longblob
BtchEntry     longblob
FileControl   longblob


我将要插入的数据如下

101 111111111 1111111111104021031A094101
52201               1                   1         PPD1         110402110402   1111000020000001
6221110000251                00000000011              1                     1 0111000020000001
822000000100111000020000000000000000000000011                                  111000020000001
52251               1                   1         CCD1         110402110402   1111000020000002
6281110000251                00000000011              1                     1 0111000020000002
822500000100111000020000000000010000000000001                                  111000020000002
9000006000001000000060066600012000000000003000000000003


如您所见,有多行以5,6和8开头。我想将它们分别保存到表的相应列中。如果可以的话,是否有可能提及最好的方法呢?如果不清楚,请注明

我写的代码是

 using (StreamReader srRead = new StreamReader(filePath))
    {
        while (srRead.Peek() >= 0)
        {
            strLine = srRead.ReadLine();
            if (strLine.StartsWith("1"))
            {
                strFileHeader = strLine;
            }
            if (strLine.StartsWith("5"))
            {
                strBatchHeader = strLine;
            }
            if (strLine.StartsWith("6"))
            {
                strEntry = strLine;
            }
            if (strLine.StartsWith("8"))
            {
                strBtchcntrl = strLine;
            }
            if (strLine.StartsWith("9"))
            {
                strFileCntrl = strLine;
            }
        }

  string strQuery = "insert into tblfiles(FName, FData,FileHeader,BatchHeader,Entry,BtchEntry,FileControl) values (@_FName,@_FData,@_FileHeader,@_BtchHeader,@_EntryDets,@_BtchCntrl,@_FileCntrl)";
        MySqlCommand cmd = new MySqlCommand(strQuery);
        cmd.Parameters.Add("@_FName", MySqlDbType.VarChar).Value = filename;
        cmd.Parameters.Add("@_FData", MySqlDbType.LongBlob).Value = bytes;
        cmd.Parameters.Add("@_FileHeader", MySqlDbType.LongBlob).Value = strFileHeader;
        cmd.Parameters.Add("@_BtchHeader", MySqlDbType.LongBlob).Value = strBatchHeader;
        cmd.Parameters.Add("@_EntryDets", MySqlDbType.LongBlob).Value = strEntry;
        cmd.Parameters.Add("@_BtchCntrl", MySqlDbType.LongBlob).Value = strBtchcntrl;
        cmd.Parameters.Add("@_FileCntrl", MySqlDbType.LongBlob).Value = strFileCntrl;
        InsertUpdateData(cmd);


但这会将最新的插入到数据库中,但是我想按照我所说的保存每一行

最佳答案

否-列每行只能存储一个值。您可以将所有批处理标头组合到一个blob中,并将其存储为一个值,但是当您读取数据时,您必须能够将它们再次分开。

相反,它看起来像:


每个文件以“ 1”记录开始,以“ 9”记录结束
每个文件包含零个或多个批次
每批以“ 5”记录开始,以“ 8”记录结束
每批包含零个或多个条目(“ 6”个记录)


如果一切正确,那么您需要3个表,如下所示:

文件表:

Field         Type
-----------   --------
FileID        integer   # unique file ID - see AUTO_INCREMENT in the MySQL reference
FName         varchar
FData         longblob
FileHeader    longblob  # '1' record
FileControl   longblob  # '9' record


批处理表:

Field         Type
-----------   --------
FileID        integer   # references a row in the File table
BatchID       integer   # unique batch ID
BatchHeader   longblob  # '5' record
BatchControl  longblob  # '8' record


BatchEntry表:

Field         Type
-----------   --------
BatchID       integer   # references a row in the Batch table
EntryId       integer   # unique file ID
Entry         longblob  # '6' record


那应该让您开始。祝好运。

关于c# - 是否可以将多个数据保存到数据库列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5565625/

10-13 06:54
查看更多