【问题标题】:C# Sqlite ExecuteReader maximum returnC# Sqlite ExecuteReader 最大返回
【发布时间】: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 是否有价值?
  • 做到了。非常感谢杰基。我在其中一行中有一个空值,但调试器没有抛出任何异常,所以我认为这不是问题。

标签: c# sql sqlite


【解决方案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 或赋予其默认值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 2020-09-18
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多