8

データベースに保存したい128ビットのキーがあります。私のコードはとしてキーを作成byte[16]し、データベースのデータ型はですvarbinary(16)

dbからバイト配列を再度取得しようとすると、元の値が取得されません。

これが私のコードです:

byte[] test =  new byte[16]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

SqlCommand myInsertCmd = new SqlCommand("INSERT INTO Test(test) VALUES(@Param)", myConnection);       
SqlParameter param = myInsertCmd.Parameters.Add("@Param", SqlDbType.VarBinary, 16);
param.Value = test;

myInsertCmd.ExecuteNonQuery();

SqlDataAdapter myAdapter1 = new SqlDataAdapter("Select test from Test;", myConnection);
DataTable dt = new DataTable();
myAdapter1.Fill(dt);

foreach (DataRow row in dt.Rows)
{
    char[] charArray = row["test"].ToString().ToCharArray();
}

の場合charArray、0x0053、0x0079、0x0073、0x0074などを取得します。また、のcharArray長さはわずか13バイトです。私は何が間違っているのですか?

4

1 に答える 1

15

row["Test"]を含むbyte[]ため、タイプのデフォルトである。をrow["Test"].ToString()返します。その後、変換してその結果を取得しますToStringbyte[]"System.Byte[]"System.Byte[]

foreach (DataRow row in dt.Rows)
{
    byte[] byteArray = (byte[])row["test"];
}
于 2012-12-19T12:17:56.070 に答える