MYSQL数据库里有一字段类型为 char(23) binary
现在要把一个object存进去,请问要如何实现?
相关代码: string ItemDataColumn = "ITEMDATA1";
string[] ItemInfo;
GetItemInfo(QuestItemID,out ItemInfo); TPOS_ITEM_GAME baseItem = new TPOS_ITEM_GAME();
baseItem.BaseID = Convert.ToInt32(QuestItemID);
baseItem.UniID = GetUniID();
baseItem.Hp = 0;
baseItem.QuestIndex = 0;
baseItem.IR = new byte[5];
baseItem.IR[0] = 0;
baseItem.IR[1] = 0;
baseItem.IR[2] = 0;
baseItem.IR[3] = 0;
baseItem.IR[4] = 0;
baseItem.Reserved = new byte[3];
baseItem.Reserved[0] = 0;
baseItem.Reserved[1] = 0;
baseItem.Reserved[2] = 0; POSDB_ITEM item2db = new POSDB_ITEM();
EdrLib.GameItemToDBItem(baseItem,ref item2db);
string mysqlCommandString = "SELECT "+ItemDataColumn+" FROM pos_item WHERE MainName='"+MainName+"'";
OdbcDataAdapter mysqlDA = new OdbcDataAdapter(mysqlCommandString,mysqlConnection);
OdbcCommand dbCommand = new OdbcCommand();
dbCommand.CommandText = "UPDATE pos_item SET "+ItemDataColumn+"=? WHERE MainName='"+MainName+"'";
dbCommand.Connection = mysqlConnection;
dbCommand.Parameters.Add(new OdbcParameter(ItemDataColumn,OdbcType.Binary,23,ItemDataColumn));
mysqlDA.UpdateCommand = dbCommand;
DataSet mysqlDS = new DataSet();
mysqlDA.Fill(mysqlDS,"item"); mysqlDS.Tables["item"].Rows[0][ItemDataColumn] = item2db; mysqlDA.Update(mysqlDS,"item");
[ StructLayout( LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct POSDB_ITEM
{
public ulong UniID;
public uint BaseID;
public byte Hp;
public byte QuestIndex;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=3 )]
public byte[] Reserved;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=5 )]
public byte[] Attrib;
public byte Status;
}
现在要把一个object存进去,请问要如何实现?
相关代码: string ItemDataColumn = "ITEMDATA1";
string[] ItemInfo;
GetItemInfo(QuestItemID,out ItemInfo); TPOS_ITEM_GAME baseItem = new TPOS_ITEM_GAME();
baseItem.BaseID = Convert.ToInt32(QuestItemID);
baseItem.UniID = GetUniID();
baseItem.Hp = 0;
baseItem.QuestIndex = 0;
baseItem.IR = new byte[5];
baseItem.IR[0] = 0;
baseItem.IR[1] = 0;
baseItem.IR[2] = 0;
baseItem.IR[3] = 0;
baseItem.IR[4] = 0;
baseItem.Reserved = new byte[3];
baseItem.Reserved[0] = 0;
baseItem.Reserved[1] = 0;
baseItem.Reserved[2] = 0; POSDB_ITEM item2db = new POSDB_ITEM();
EdrLib.GameItemToDBItem(baseItem,ref item2db);
string mysqlCommandString = "SELECT "+ItemDataColumn+" FROM pos_item WHERE MainName='"+MainName+"'";
OdbcDataAdapter mysqlDA = new OdbcDataAdapter(mysqlCommandString,mysqlConnection);
OdbcCommand dbCommand = new OdbcCommand();
dbCommand.CommandText = "UPDATE pos_item SET "+ItemDataColumn+"=? WHERE MainName='"+MainName+"'";
dbCommand.Connection = mysqlConnection;
dbCommand.Parameters.Add(new OdbcParameter(ItemDataColumn,OdbcType.Binary,23,ItemDataColumn));
mysqlDA.UpdateCommand = dbCommand;
DataSet mysqlDS = new DataSet();
mysqlDA.Fill(mysqlDS,"item"); mysqlDS.Tables["item"].Rows[0][ItemDataColumn] = item2db; mysqlDA.Update(mysqlDS,"item");
[ StructLayout( LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct POSDB_ITEM
{
public ulong UniID;
public uint BaseID;
public byte Hp;
public byte QuestIndex;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=3 )]
public byte[] Reserved;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=5 )]
public byte[] Attrib;
public byte Status;
}
object如果不做类型转化应该是没有办法存进去的
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1028/cpref/html/frlrfSystemRuntimeSerialization.htm