c# 如何将二维数组中的数据导入到sql数据库中?用for循环赋值?谢谢

解决方案 »

  1.   

    方法有很多啊...
    拼成SQL是最简单的一个..
    搞成DataSet批量导入也是一个办法..
      

  2.   

    利用SqlBulkCopy高效将DataSet导入SqlServer
                using( SqlConnection conn = new SqlConnection( connectionString ) ) {
                    conn.Open();
                    using( SqlBulkCopy sbc = new SqlBulkCopy( conn ) ) {
                        sbc.DestinationTableName = "您的表名";                    for( int i = 0 ; i < original.Tables[ 0 ].Columns.Count ; i++ ) {
                            sbc.ColumnMappings.Add( original.Tables[ 0 ].Columns[ i ].ColumnName, original.Tables[ 0 ].Columns[ i ].ColumnName );
                        }
                        sbc.WriteToServer( original.Tables[ 0 ] );
                    }
                }
      

  3.   

    能不能用for循环实现一下?用insert 或者什么其他的sql语句能实现.
      

  4.   

    使用for循环构造SQL语句导入就可以了。。
      

  5.   

    如何写?谢谢.我想把textbox里的内容连同arr数组中的数据一起加到一张表中,如何实现.用for循环
      

  6.   

    在帖子《MD5密码存储》中我写了一个简单的demo,把16个字节大小的一个数组连同一个字符串写入SQL Server。我们补充两个将一维和二维字节数组转换的方法:    public static class Ext
        {
            public static byte[] ConvertToOneDimensional(this byte[,] array)
            {
                var length = array.GetLongLength(0) * array.GetLongLength(1);
                var ret = new byte[length];
                var n = 0;
                for (var i = 0; i < array.GetLongLength(0); i++)
                    for (var j = 0; j < array.GetLongLength(1); j++)
                        ret[n++] = array[i, j];
                return ret;
            }        public static byte[,] ConvertToTwoDimensional(this byte[] array, int xlength, int ylength)
            {
                var ret = new byte[xlength, ylength];
                var i = 0;
                var j = 0;
                for (var n = 0; n < array.Length; n++)
                {
                    ret[i, j++] = array[n];
                    if (j >= ylength)
                    {
                        i++;
                        j = 0;
                    }
                }
                return ret;
            }    }
    这样你就可以先将二维数组转换为一维数组,然后写入SQL Server表中。取出时,做相反的转换。
      

  7.   

    在上述demo中分别写了两行:comm.Parameters.Add(new SqlParameter("p2", testdata));和var output = (byte[])rd["MD5"];用于保存和取出一维数组。改为针对二维数组的处理就是:comm.Parameters.Add(new SqlParameter("p2", testdata.ConvertToOneDimensional()));和var output = ((byte[])rd["MD5"])ConvertToTwoDimensional(3,4);如果二维数组的大小是可变的,你还可以把两个维度的大小保存在记录的两个字段中。
      

  8.   

    var output = ((byte[])rd["MD5"])ConvertToTwoDimensional(3,4);  -->
          var output = ((byte[])rd["MD5"]).ConvertToTwoDimensional(3,4); 
      

  9.   

    恩,如果二维byte数组的大小是不确定的,在SQL Server中声明的保存一维byte数组的字段就应该是可变长二进制,而不是定长的二进制类型。另外,这里仅仅是用byte数组做例子。因为你并没有说明数组中单元是什么类型的。例如如果你的数组中单元是自定义类型对象?呵呵,如果类型比byte复杂,你可以进行二进制序列化,然后读出序列化后的Stream到一个byte[]一维数组中。从数据库读取数据时再反序列化。这可以处理包括byte[,]在内的所有允许二进制序列化的对象,包括你的二维数组中的单元是自定义类型对象也可以处理。也可以进行xml序列化,然后作为字符串写入数据库记录。可能比二进制序列稍微慢一点。