数组数据
  1,2,3,4,5,6,7,8
  1,2,3,4,5,6,7,8
  1,2,3,4,5,6,7,8(假设每次插入的时候数组的值都是一样的)上面假设是我数据里某个字段所插入的值,所插入的是数组byte[] a=new byte[8]的值 ,我是用string s +=a[i]的形式将数组元素拼成字符串的形式插入的,所以数据表的每个字段都是字符串的形式(如上表所示)那么请问我如何将数据表里的“数组数据”这个字段的所有字符串都取出来?并将其赋值给一个数组(数组b(byte型))?最后在datagridview上显示呢?(该控件上只要显示由数组的几个元素组成的数据,如:只需b[1]和b[2]组成的元素)我的代码如下:   SQLiteConnection con = new SQLiteConnection();
            SQLiteCommand cmd = new SQLiteCommand();            con.ConnectionString = "Data Source=" + databaseFileName;
            cmd.Connection = con;
            con.Open();
            SQLiteDataAdapter da = new SQLiteDataAdapter("select  数据数组  from   mes ", con);
            DataSet ds = new DataSet();
       
             da.Fill(ds, "mes");
          for (int index = ds.Tables[0].Rows.Count - 1; index >= 0; index--)///将数据库里的数据取出来
             {
                 s1 = ds.Tables[0].Rows[0]["数据数组"].ToString();             }
上诉代码我只实现了将数据表里的所有行的字符串都取出来赋值给了s1,但是如何将s1赋给一个byte型的数组b和在datagridview控件上显示的代码不知道咋写????请大侠们指教。。
         

解决方案 »

  1.   

    你为什么不能直接用二进制列来存在啊,超大的二进制就存为Image类型,这样读取写入都可以按照byte[]进行了,至于要显示的话,可以在SQL语句中用cast来转换下就OK了
      

  2.   

    你得先修改数据库中的字段类型,不要用varchar类型,数组就用binary类型。
    接着就是保存时,直接传递byte[]数据保存,不要做任何转换。
    读取时直接用byte[]变量接收那个列的数据。
    要显示就调用如下函数来显示:
            /// <summary>
            /// 普通方法——字节数组转字符串,最容易想到
            /// </summary>
            /// <param name="input"></param>
            /// <returns></returns>
            public static string BytesToString(byte[] input)
            {
                StringBuilder sb = new StringBuilder();
                foreach (byte b in input)
                {
                    sb.Append(b.ToString("X2"));
                }
                return sb.ToString();
            }
      

  3.   

        for (i = 0; i <= 599; i++)
                {
                    CH372_Saved_Wave[i] = (byte)i;  ///这个是我的byte数组
                   s += System.Convert.ToString(CH372_Saved_Wave[i], 2)+"," ///转换成二进制
                }cmd.CommandText = "insert into mes (坐标数组)values('"+ s1 + "')";///以二进制的形式将数组插入到数据库里我现在将数据库字段的类型改成image型了,这样可以吗???
    若可以的话,那我怎么将数据库里的数据取出来再赋给一个byte数组呢????
      

  4.   

    你还是没有理解我的意思啊,如果是要以二进制形式插入数据库,就不能用你那种方法,必须参数化,例如:
    cmd.CommandText = "insert into mes (坐标数组)values(@bytes)";
    cmd.Parameters.Add("@bytes",CH372_Saved_Wave);至于读取,由于数据类型对应的就是byte[],只要将object类型强制类型转换下即可。
    CH372_Saved_Wave = (byte[])ds.Tables[0].Rows[0]["数据数组"]