New SQLite user... trying to understand the following issue.
(Spent several hours on Google, Stack Overflow, SQLite mailing list archive... 
found nothing satisfactory.)

[ISSUE]
As far as I can tell, after calling ExecuteReader(), I cannot Read() any rows 
in the *first* result set because the returned DataReader has *already* Read() 
the rows.
Calling NextResult() moves to the next result set, and then Read() allows me to 
step through the rows in the *second* (and subsequent) result sets as expected.

[CONFIGURATION:SQLITE]
sqlite-netFx46-binary-x64-2015-1.0.111.0\System.Data.SQLite.dll
SQLiteSourceId=2019-04-16 19:49:53 
884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50
SQLiteVersion=3.28.0
InteropVersion=1.0.111.0
ProviderSourceId=767b97f17029698d929f3fd9be563f51942b1805 2019-05-16 03:23:41 
UTC
ProviderVersion=1.0.111.0

[CONFIGURATION:OTHER]
Windows 10 Pro
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3a09
.NET Framework=4.7.2
CLRVersion=4.0.30319.42000
PSVersion=5.1.17134.858
PSBuildVersion=10.0.17134.858

[STEPS TO REPRODUCE]
### SETUP ###
PS D:\temp> Add-Type -Path 
'D:\temp\sqlite-netFx46-binary-x64-2015-1.0.111.0\System.Data.SQLite.dll'
PS D:\temp> $dbConnection = New-Object -TypeName 
System.Data.SQLite.SQLiteConnection
PS D:\temp> $dbConnection.ConnectionString = 'Data Source=:memory:'
PS D:\temp> $dbConnection.Open()
PS D:\temp> $dbCommand = New-Object -TypeName System.Data.SQLite.SQLiteCommand
PS D:\temp> $dbCommand.Connection = $dbConnection
PS D:\temp> $dbCommand.CommandText = 'CREATE TABLE T1(C1,C2);'
PS D:\temp> $dbNonQuery = $dbCommand.ExecuteNonQuery()
PS D:\temp> $dbCommand.CommandText = 'INSERT INTO T1 VALUES 
(101,102),(201,202),(301,302);'
PS D:\temp> $dbNonQuery = $dbCommand.ExecuteNonQuery()
PS D:\temp> $dbCommand.CommandText = 'SELECT C1 AS X1,C2 AS X2 FROM T1;SELECT 
C1 AS Y1,C2 AS Y2 FROM T1;'
PS D:\temp> $dataReader = $dbCommand.ExecuteReader()

### ACTUAL RESULTS: *FIRST* RESULT SET ###
PS D:\temp> $dataReader.GetName(0)
X1
PS D:\temp> $dataReader.GetName(1)
X2
PS D:\temp> $dataReader.StepCount
3
PS D:\temp> $dataReader.HasRows
False
PS D:\temp> $dataReader.Read()
False
PS D:\temp> $dataReader.GetValue(0)
Exception calling "GetValue" with "1" argument(s): "No current row"
(...)
PS D:\temp> $dataReader.GetValue(1)
Exception calling "GetValue" with "1" argument(s): "No current row"
(...)
### ACTUAL RESULTS: *SECOND* RESULT SET ###
PS D:\temp> $dataReader.NextResult()
True
PS D:\temp> $dataReader.StepCount
4
PS D:\temp> $dataReader.GetName(0)
Y1
PS D:\temp> $dataReader.GetName(1)
Y2
PS D:\temp> $dataReader.HasRows
True
PS D:\temp> $dataReader.GetValue(0)
Exception calling "GetValue" with "1" argument(s): "No current row"
(...)
PS D:\temp> $dataReader.Read()
True
PS D:\temp> $dataReader.GetValue(0)
101
PS D:\temp> $dataReader.GetValue(1)
102
PS D:\temp> $dataReader.HasRows
True
PS D:\temp> $dataReader.Read()
True
PS D:\temp> $dataReader.GetValue(0)
201
PS D:\temp> $dataReader.GetValue(1)
202
PS D:\temp> $dataReader.HasRows
True
PS D:\temp> $dataReader.Read()
True
PS D:\temp> $dataReader.GetValue(0)
301
PS D:\temp> $dataReader.GetValue(1)
302
PS D:\temp> $dataReader.Read()
False
PS D:\temp> $dataReader.HasRows
False
PS D:\temp> $dataReader.GetValue(0)
Exception calling "GetValue" with "1" argument(s): "No current row"
(...)

--
Guy St-Denis
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to