C# Sqlite ExecuteReader 最大返回

Posted

技术标签:

【中文标题】C# Sqlite ExecuteReader 最大返回【英文标题】:C# Sqlite ExecuteReader maximum return 【发布时间】:2015-06-13 23:26:41 【问题描述】:

ExecuteReader 可以返回的最大行数是多少?我在一个表中有大约 67 行,它只返回前 20 行。

这是我的一部分来源:

SQLiteConnection sDBConnection = new SQLiteConnection("Data Source=Database.ddb;Version=3");
sDBConnection.Open();
string sqlCom = "SELECT * FROM Table1";
SQLiteCommand scdCommand = new SQLiteCommand(sqlCom, sDBConnection);
SQLiteDataReader reader = scdCommand.ExecuteReader();

while(reader.Read())

    string Value1 = (string)reader["Col1"];
    bool Value2 = true;
    string Value3 = (string)reader["Col2"];
    object[] row =  Value1, Value2, Value3, Value4, Value5 ;
    DataGridView1.Rows.Add(row);


reader.Close();
sDBConnection.Close();

当然,不在 while 循环中的值在别处定义。

【问题讨论】:

使用调试器,也许你有一个导致异常的空值。数据读取器没有行数限制。 如果有最大值肯定超过 20。还有其他问题。有什么例外吗? 不,这就是我困惑的原因。我已经检查并测试了所有值以确保没有任何 null。 对于表中的所有行,Col1Col2 是否有价值? 做到了。非常感谢杰基。我在其中一行中有一个空值,但调试器没有抛出任何异常,所以我认为这不是问题。 【参考方案1】:

尝试如下编辑您的代码:

SQLiteConnection sDBConnection = new SQLiteConnection("Data Source=Database.ddb;Version=3");
sDBConnection.Open();
string sqlCom = "SELECT * FROM Table1";
SQLiteCommand scdCommand = new SQLiteCommand(sqlCom, sDBConnection);
SQLiteDataReader reader = scdCommand.ExecuteReader();

while(reader.Read())

string Value1 = reader["Col1"] != null ? Convert.ToString(reader["Col1"]) : string.Empty;
bool Value2 = true;
string Value3 = reader["Col2"] != null ? Convert.ToString(reader["Col2"]) : string.Empty;
object[] row =  Value1, Value2, Value3 ;
DataGridView1.Rows.Add(row);


reader.Close();
sDBConnection.Close();

移除 Value4 和 Value5 或赋予其默认值

【讨论】:

以上是关于C# Sqlite ExecuteReader 最大返回的主要内容,如果未能解决你的问题,请参考以下文章

C#个人通信录,里面有个登陆的if (OpertDB.ExecuteReader(sql))这一句不知道怎么解决

SQLDataReader 在 ExecuteReader 之后读取为空

ExecuteReader:CommandText 属性尚未初始化

C# SqlDataReader 关闭方法

Google Gears SQLite DB 和 C#

SQLite数据库中获取新插入数据的自增长ID