byte[] _lastChange;
//_lasgChange值是从SQLServer中提取的timestamp类型的字段值
在生成更新数据库的SQL语句如下
string sql="update a set a.f1='123' where a.fLastChange="+lastChangeStringpublic lastChangeString
{
get
{
??应该如何写才能将_lastChange转换为可以将上述SQL语句补充完整的字符串
}
}
//_lasgChange值是从SQLServer中提取的timestamp类型的字段值
在生成更新数据库的SQL语句如下
string sql="update a set a.f1='123' where a.fLastChange="+lastChangeStringpublic lastChangeString
{
get
{
??应该如何写才能将_lastChange转换为可以将上述SQL语句补充完整的字符串
}
}
{
get
{
string t=BitConverter.ToString(_lastChange);
t=t.Replace("-","");
return "0x"+t;
}
}
这样是可以了,不知道有没有别的办法
--申明3个时间戳
declare @timeFlag1 bigint
declare @timeFlag2 bigint
declare @timeFlag3 bigint--建立表,timestamp类型不需要字段名
create table test(timestamp,a int)--插入1 记录时间戳,@@dbts为数据库时间戳
insert into test select null,1
set @timeFlag1=cast(@@dbts as bigint)--插入2 记录时间戳
insert into test select null,2
set @timeFlag2=cast(@@dbts as bigint)--更新3 记录时间戳
update test set a=3 where a=2
set @timeFlag3=cast(@@dbts as bigint)--时间戳1的记录
select *from test where timestamp=cast(@timeFlag1 as varbinary(8))
--时间戳2的记录已经不存在了
select *from test where timestamp=cast(@timeFlag2 as varbinary(8))
--时间戳3的记录
select *from test where timestamp=cast(@timeFlag3 as varbinary(8))--删除表
drop table test
set nocount off/*--测试结果
timestamp a
------------------ -----------
0x000000000000B553 1timestamp a
------------------ -----------timestamp a
------------------ -----------
0x000000000000B555 3
*/
string sql="update a set a.f1='123' where a.fLastChange=@fLastChange";SqlCommand cmd = con.CreateCommand();
cmd.CommandText = sql;SqlParameter para= new SqlParameter("@fLastChange", SqlDbType.Timestamp);
para.Value = timestr;cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();
还有类似的对二进制的处理,比如存储图片等数据,使用Parameter是正确的处理方法。
object _lastChange=getDBTimeStamp();string sql="update a set a.f1='123' where a.fLastChange=@fLastChange";SqlCommand cmd = con.CreateCommand();
cmd.CommandText = sql;SqlParameter para= new SqlParameter("@fLastChange", SqlDbType.Timestamp);
para.Value = lastChange;cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();