Created
January 31, 2019 23:48
-
-
Save MarkPflug/b46cdc748bdf71258a4812dd4d809858 to your computer and use it in GitHub Desktop.
Read binary(16) and rowversion
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Data.SqlClient; | |
using System.Runtime.InteropServices; | |
class Program | |
{ | |
static void Main() | |
{ | |
var dbName = "Test" + DateTime.Now.ToString("yyyyMMddHHmmss"); | |
var createSql = "create table Data (Id int identity, Payload binary(16), Version rowversion, constraint PK_Data primary key (Id))"; | |
var populateData = @"declare @digits as table (d int) | |
insert into @digits values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9) | |
insert into Data (payload) | |
select | |
d1.d * 1 + | |
d2.d * 10 + | |
d3.d * 100 + | |
d4.d * 1000 + | |
d5.d * 10000 + | |
d6.d * 100000 | |
as value | |
from @digits d1 | |
cross join @digits d2 | |
cross join @digits d3 | |
cross join @digits d4 | |
cross join @digits d5 | |
cross join @digits d6"; | |
using (var conn = new SqlConnection()) { | |
conn.ConnectionString = @"Data Source=(localdb)\MSSQLLocalDB;Integrated Security=true;"; | |
conn.Open(); | |
using (var cmd = conn.CreateCommand()) | |
{ | |
cmd.CommandText = "create database [" + dbName + "]"; | |
cmd.ExecuteNonQuery(); | |
cmd.CommandText = "use [" + dbName + "]"; | |
cmd.ExecuteNonQuery(); | |
cmd.CommandText = createSql; | |
cmd.ExecuteNonQuery(); | |
cmd.CommandText = populateData; | |
cmd.ExecuteNonQuery(); | |
cmd.CommandText = "Select Id, Payload, Version from Data"; | |
byte[] payloadBuffer = new byte[16]; | |
byte[] verBuffer = new byte[8]; | |
int c = 0; | |
for (int i = 0; i < 1000; i++) | |
{ | |
using (var reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess)) | |
{ | |
while (reader.Read()) | |
{ | |
c++; | |
var id = reader.GetInt32(0); | |
var payload = reader.GetBytes(1, 0, payloadBuffer, 0, 16); | |
var ver = reader.GetBytes(2, 0, verBuffer, 0, 8); | |
} | |
} | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment