C# 中的 SQLite 使用 .GetBytes 抛出“InvalidCastException”

2024-04-17

我正在尝试访问 SQLite DB 中的 Blob 列,该列最终将成为指向文件或内存中记录的指针。我正在尝试使用 SQLite 中的 .GetBytes 方法来获取代表我的数据的字节数组。使用此方法时,我不断收到 InvalidCastException 异常。一切似乎都已就位,程序编译得很好,但在运行时,这个异常不断被抛出。我四处寻找答案,一切似乎都与我的代码一致,所以我在这里不知所措,不幸的是我找不到任何关于 C# 中 SQLite 的好的文档。代码如下

  public byte[] Output()
    {
        byte[] temp = null;
        int col = Columns + 1;
        if(read.Read())
        {
            read.GetBytes(col, 0, temp, 0, 2048); //exception is thrown here
        }
        return temp;
    }

我已经能够读取数据库中的其他整数和文本列,但由于某种原因似乎无法正确获取 blob。

编辑:新信息,这是异常的堆栈跟踪:

     StackTrace:
   at System.Data.SQLite.SQLiteDataReader.VerifyType(Int32 i, DbType typ)
   at System.Data.SQLite.SQLiteDataReader.GetBytes(Int32 i, Int64 fieldOffset, Byte[] buffer, Int32 bufferoffset, Int32 length)
   at SQLiteSort.Sort.Output() in C:\Users\cjones\Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Sort.cs:line 192
   at SQLiteSort.Sort.Main(String[] args) in C:\Users\cjones\Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Sort.cs:line 72
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

内部异常:

该异常似乎是由 SQLiteDataReader.VerifyType() 引发的,它正在查看用于 DbType.Binary 类型的列,如果该列不是 DbType.Binary、DbType.String 或 DbType.Guid,则引发异常。我一遍又一遍地检查该表,它仍然将列类型显示为 blob。


事实上,它抛出了一个InvalidCastException当然看起来是错误的,但是你的代码is破碎的 -temp将为 null,这当然不应该为 null。您没有提供任何地方来读取数据。

You're also没有注意到返回值GetBytes,我希望你...

编辑:只是为了检查......你are尝试从适当的列中读取,对吧?InvalidCastException如果你想打电话的话会有点合适GetBytes在(比如说)整数列上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的 SQLite 使用 .GetBytes 抛出“InvalidCastException” 的相关文章

随机推荐

  • python setattr 用于带有装饰器的动态方法创建器

    我有一个定义了多个方法的类 import mat class Klass object mat sell mat CanSet def method1 self return None mat sell mat CanSet def met
  • 64 位定点乘法错误

    我正在 C 中实现一个 64 位定点有符号 31 32 数字类型 基于long 到目前为止 加法和减法都很顺利 然而 乘法有一个我正在尝试解决的恼人的情况 我当前的算法包括将每个操作数分为最高和最低有效 32 位 执行 4 次乘法分为 4
  • 资产管道升级导致 Paperclip 中的 Default_url 损坏

    我正在使用 Paperclip 并且我的附件之一有一个像这样的 default url 选项 default url gt images missing style png 由于目录已移动 资产管道显然不喜欢这样 处理这个问题的最佳方法是什
  • Spring MVC 控制器是单例吗?

    我有一个关于Spring 3 MVC Controllers 当请求到来时 容器是否为每个请求创建一个新的控制器实例 类似于Action在 Struts 2 中 ThreadLocalActionContext 还是单个实例响应所有请求 默
  • 从 F# 中存储为概率序列的离散分布函数中抽取随机数

    存在给定的有限长度 N 的浮点序列 介于 0 和 1 之间 表示整数 0 N 1 上的分布函数 我们试图从这个分布中抽取一个随机数 一种方法是在 0 1 浮点数 中绘制一个均匀随机变量 然后计算该数字的逆累积分布函数 如果分布在数组中 则代
  • 带有下划线的牛顿驼峰命名法问题

    我注意到 当我序列化具有 HTTP VERB 键的 C 字典时 它会变成httP VERB在 JSON 结构中而不是 hTTP VERB 或 http verb 我希望驼峰式大小写能够实现 这是我用来重现该问题的代码 class Progr
  • Jfreechart垂直线模糊

    I am using JFreechart to generate some plots and I found the lines in my plot is blurry but the demo shows that all the
  • 我的朋友可以使用我的本地 git 存储库作为他的远程存储库吗?

    我的计算机上有一个本地 git 存储库 有没有可能我的朋友将他的上游设置为我计算机上的本地存储库 而我的本地存储库成为他的远程存储库 所以他将能够从我的本地存储库获取最新的更改并推送到我的本地存储库 我不想使用类似的工具github or
  • Google 地图 v3 创建两点之间的路线

    我正在使用 Google Maps API 开发网络应用程序 我正在尝试在两点之间创建一条路线 但由于某种原因我还没有弄清楚如何创建它 以下是我的代码 如果我缺少什么 请告诉我 谢谢
  • Android viewpager自动滑动

    如何处理 viewpager 页面的自动滑动和手动滑动 即 viewpager 中有一组 10 个页面 每个页面在 3 秒后滑动 但问题是当用户滑动页面时 它会移回到我需要的序列页面 1 gt 如果用户连续滑动两个页面 则不应返回 2 gt
  • 子串超出范围

    我正在尝试从字符串的最后部分中提取数字 我已经编写了一个函数来执行此操作 但遇到索引超出范围的问题 这是字符串 type value cat 1 3 6 1 4 1 26928 1 1 1 2 1 2 1 1 descCat 1 3 6 1
  • 内部类和局部变量

    为什么我需要声明local variable as final if my Inner class需要使用内部定义的方法吗 例子 class MyOuter2 private String x Outer2 void doStuff fin
  • 如何在 iPhone 上进行实时声音/信号处理?

    我可能正在开发一个基于 iPhone 的应用程序 进行近乎实时的声音处理 过滤等 我想知道开始的最佳方式 我想创建一个用于录制和处理声音的音频提示吗 如上所述here http developer apple com iphone libr
  • 在 Android Flash 10.1 上打开软件键盘

    我正在开发在浏览器中运行的移动 Flash 应用程序 不是 AIR 应用程序 根据 Adob e 的说法 Flash Player 10 1 提供支持 使用本机设备虚拟键盘 如果没有物理支持 则使用 TextField 支持 检测到键盘 一
  • jquery-ui 滑块手柄完成位置为 100% 左侧 - 将其放置在滑块之外

    我第一次使用 jQuery ui 滑块 并对一个相当基本的问题感到困惑 设置滑块时 我希望不使用主题 当我从左向右滑动时 滑块手柄的右手位置会跨过滑块 1 个手柄宽度 这是由于滑块 css 将手柄定位为 left 100 我注意到许多其他人
  • 如何从 teamcity 以管理员身份运行 Visual Studio 或 nunit

    我目前正在使用 teamcity 运行我的测试 给出以下错误 设置方法失败 System UnauthorizedAccessException 检索 CLSID 为 0002DF01 0000 0000 C000 的组件的 COM 类工厂
  • AttributeError:“NoneType”对象没有属性“attname”(Django)

    我有一个相当复杂的模型 第一次调用MyModel objects create kwargs 失败了 AttributeError NoneType 对象没有属性 attname 堆栈跟踪如下所示 在 Django 1 11 中 djang
  • 将 onclick 事件添加到动态创建的链接按钮

    我想要完成的是使用 onClick 命令设置动态创建的链接按钮 以便在单击时它将运行后面代码中的方法 这是我的代码 protected void Page Init object sender EventArgs e LoadLeftSid
  • ODP.NET 集成安全性无效连接字符串参数

    我缺少什么
  • C# 中的 SQLite 使用 .GetBytes 抛出“InvalidCastException”

    我正在尝试访问 SQLite DB 中的 Blob 列 该列最终将成为指向文件或内存中记录的指针 我正在尝试使用 SQLite 中的 GetBytes 方法来获取代表我的数据的字节数组 使用此方法时 我不断收到 InvalidCastExc