下面是一个从一个text文件读出四行数据,现在的问题是,我如何把这个数据分成三列保存到数据库里
JA0600001,,0B003F0E3E,绿色
JA0600002,,0B003F4F5F,绿色
JA0600003,,0B003F3175,绿色
JA0600004,,0B003F13BE,绿色

解决方案 »

  1.   

    你能把一行分成三列吗?比如split by ','
    然后通过索引将你要的存入三个数组
    应该就能分清楚了吧
      

  2.   

    string path = ....
            string[] lines = System.IO.File.ReadAllLines(path, System.Text.Encoding.UTF8);
            foreach (string line in lines) {
                string[] items = line.Split(new char[] { ',' });
                string sql = String.Format("INSERT INTO MyTable(Col1, Col2, , Col3) VALUES('{0}', '{1}', '{2}')",
                        items[0], items[2], items[3]);
                // 写入数据库
                // ....
            }
      

  3.   

    string[] lines = System.IO.File.ReadAllLines(path, System.Text.Encoding.UTF8);
            foreach (string line in lines) {
                string[] items = line.Split(new char[] { ',' });
                string sql = String.Format("INSERT INTO MyTable(Col1, Col2, , Col3) VALUES('{0}', '{1}', '{2}')",
                        items[0], items[2], items[3]);
      

  4.   

    -_-#,怎么“,”个数还不一样如果是少量数据,或是已经读入的,可以这样做string test = @"JA0600001,,0B003F0E3E,绿色
    JA0600002,,0B003F4F5F,绿色
    JA0600003,,0B003F3175,绿色
    JA0600004,,0B003F13BE,绿色";
    test = test.Replace(",,", ",");
    string[] arrLines = test.Split('\n');
    foreach (string s in arrLines)
    {
        string[] arrItems = s.Split(',');
        if (arrItems.Length == 3)
        {
            //这里写数据库
            //Response.Write(arrItems[0] + "<br>");
            //Response.Write(arrItems[1] + "<br>");
            //Response.Write(arrItems[2] + "<br>");
        }
    }如果是未读入或是大量数据,可以用2楼的方法
    其实就一个Split方法的运用,这种问题楼主自己多尝试一下,应该能搞定的
      

  5.   

    楼上说的对,用Split方法,稍加操作即可
      

  6.   

    问题续:
    已按照这两位仁兄(Jingleca,shoushii)的代码测试了
    上述问题字符串转换成字段数组的问题已得到解决,现在还有两个问题:
    1、文字取出来的是乱码,"绿色"取过来是"????",我换了Unicode还是一样
    2、如何把得到的数组显示在gridview里,本人刚接触C#做web应用程序编程,往大师多指点,谢谢!
      

  7.   

    你文件什么编码,把UTF8改成与文件相同的编码
      

  8.   

    try:
    string[] lines = System.IO.File.ReadAllLines(path, System.Text.Encoding.ASCII);
      

  9.   

    File.ReadAllLines是把所有的行都取出来,但是文件内容太多,能不能一行一行的取,我看了file类好像没有这个方法,望指教
      

  10.   

    你文件什么编码,把UTF8改成与文件相同的编码
    你说的对,改过来了,可以显示文字了,现在第二个问题怎么解决,呵呵,谢谢!
      

  11.   

    我已把text文件和ASCII编码方式统一起来了,解决了第一个问题,感谢各位仁兄相助,现在怎么把数组显示在web开发程序里的Gridview控件
      

  12.   

    续上
    gridview.DataSource = items;
    gridview.DataBind();
    这样不知道行不行,但是没有数据显示?
      

  13.   

    那就在Split以后,存到DataTable里吧,比如dt,然后gridview.DataSource = dt;
    gridview.DataBind();这样以后操作也方便
      

  14.   

    不用费这个大了,用的是SQL SERVER吗?
    用里面的DTS直接读取TXT文件,把格式设置好,直接读进数据库里.
      

  15.   

    还是楼上的方法正点.呵呵,如果非要自己写用split就足够了.虽然你的","个数不一样,但split里能够过滤掉空字符串.自己找下就行了
      

  16.   

    string[] lines = System.IO.File.ReadAllLines(@"E:\CL7200_延安\延安封印资产编号\xp文件\BC06060604.txt", System.Text.Encoding.ASCII);
              
            
            DataTable dt = new DataTable("detailFY");
              DataRow rw; 
            
              DataColumn column = new DataColumn();
              column.DataType = System.Type.GetType("System.String");
              column.AllowDBNull = false;
              column.Caption = "zich";
              column.ColumnName = "zich";
              column.DefaultValue = 25;
              dt.Columns.Add(column);          column = new DataColumn();
              column.DataType = System.Type.GetType("System.String");
              column.AllowDBNull = true ;
              column.Caption = "yuanzch";
              column.ColumnName = "yuanzch";
              column.DefaultValue = 25;
              dt.Columns.Add(column);           column = new DataColumn();
              column.DataType = System.Type.GetType("System.String");
              column.AllowDBNull = true;
              column.Caption = "yans";
              column.ColumnName = "yans";
              column.DefaultValue = 25;
              dt.Columns.Add(column);         foreach (string line in lines)
            {
                string[] items = line.Split(new char[] { ',' });            //string sqlInSert = String.Format("INSERT INTO jl_qianfda(zich, yuanzch, yans) VALUES('{0}', '{1}', '{2}')", items[0], items[2], items[3]);
                //InsertData(sqlInSert );            rw = dt.NewRow();
                rw["zich"] = items[0];
                rw["yuanzch"] = items[1];
                rw["yans"] = items[2];
              
               
            }
            GviewDetail.DataSource = dt;
            GviewDetail.DataBind();
      

  17.   

    各位帮忙看看代码,为什么GviewDetail没有数据显示呢?
      <asp:GridView ID="GviewDetail" runat="server" AutoGenerateColumns="False">
                                        <Columns>
                                            <asp:BoundField DataField="zich" />
                                            <asp:BoundField DataField="yuanzch" />
                                            <asp:BoundField DataField="yans" />
                                        </Columns>
                                    </asp:GridView>
      

  18.   

    直接用ado.net读取csv文件就是了,这样直接就是一个dataset,你可以直接用gridview的bind
      

  19.   

    更正:          rw["zich"] = items[0];
                      rw["yuanzch"] = items[2];
                      rw["yans"] = items[3];
              
      

  20.   

    有了,是小弟过于救急,少了写一行代码了。 dt.Rows.Add(rw );谢谢各位!
      

  21.   

    用split分离,然后把一行写入数据库,再用个行遍历,就可以把所有行写入数据库
      

  22.   

    为什么不 sscanf后再写入呢?