- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用Delphi XE2。我的代码从 SQL-Server 2008 R2 数据库中提取数据。返回的数据是一个包含 1,055,227 字节数据的 nvarchar(max)
字段。我使用以下代码将字段数据保存到文件中:
procedure WriteFieldToFile(FieldName: string; Query: TSQLQuery);
var
ss: TStringStream;
begin
ss := TStringStream.Create;
try
ss.WriteString(Query.FieldByName(FieldName).AsString);
ss.Position := 0;
ss.SaveToFile('C:\Test.txt');
finally
FreeAndNil(ss);
end;
end;
当我在十六进制查看器中检查文件时,前 524,287 字节(正好是 1/2 兆)看起来是正确的。剩余字节(524,288 到 1,055,227)均为空(#0),而不是原始数据。
这是将字符串字段从 TSQLQuery
保存到文件的正确方法吗?我选择使用 TStringStream
因为我最终会添加代码来对流上的数据执行其他操作,而这是 TFileStream
无法做到的。
最佳答案
TStringStream
在 XE2 中支持 TEncoding
,但您没有在构造函数中指定任何编码,因此将使用 TEncoding.Default
,这意味着您提供给它的任何字符串都将在内部转换为操作系统默认的 Ansi 编码。确保编码支持您尝试使用的 Unicode 字符,或者指定更合适的编码,例如 TEncoding.UTF8
。
还要确保 AsString
返回有效且正确的 UnicodeString
值。如果将垃圾作为输入,TStringStream
将无法正确保存数据。确保 FieldByName()
返回指向 TWideStringField
对象而不是 TStringField
对象的指针,以便正确处理数据库的 Unicode 数据。
关于delphi - TSQLQuery.FieldByName().AsString -> TStringStream 损坏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210174/
我读过一篇博客文章(目前我找不到链接),其中作者说分配局部变量比使用 ADOQuery.FieldByName('...').asString 或更快TSQLQuery.FieldByName('..
我刚刚看到了他们使用的一些代码(D5)... aStr:=tblAcct.FieldByName('Name').Text; 它似乎工作正常,但我一直使用...... aStr:=tblAcct.Fi
我正在使用Delphi XE2。我的代码从 SQL-Server 2008 R2 数据库中提取数据。返回的数据是一个包含 1,055,227 字节数据的 nvarchar(max) 字段。我使用以下代
我正在尝试简单地访问端点并使用 asString() 方法获取响应主体和 HttpResponse。代码可以编译,但在运行时会出错,说没有这样的方法错误。 我将 Unirest 导入到我的 Maven
我正在开发一个包含大量表单的大型项目,使用 BDE 和 ODBC 连接到 MySQL 数据库。 我可以在 Delphi 2009 中编译它并且工作正常。当我在 Delphi 2010 中编译它时,没有
我的情况如下:有一些类 MyList 稍后可能会得到特定的实现。目前,像 std::vector 这样的行为是可以的。 但是,我确实需要一种简单的方法来对其调用某种 asString()/toStri
当我们将数据库组件从 ODBC Express 交换到 ADO 时,我们遇到的最大问题之一是 ODBC Express“右修剪”了 CHAR 字段的结果,而 ADO 没有。 CHAR 字段填满了它们的
本文整理了Java中com.ibm.wala.util.warnings.Warnings.asString()方法的一些代码示例,展示了Warnings.asString()的具体用法。这些代码示例
本文整理了Java中org.apache.drill.yarn.zk.ZKClusterCoordinatorDriver.asString()方法的一些代码示例,展示了ZKClusterCoordi
给定以下案例类LogMessage: import io.circe.{Decoder, Encoder} import io.circe.generic.semiauto.{deriveDecode
我正在尝试编写一个 AsString() 函数,根据我的喜好将 STL 容器转换为字符串。这是我到目前为止提出的代码: template inline string AsString(const T&
我有一个 simpleIntegerProperty 表示以秒为单位的数量,我想以 hh:mm:ss 格式表示。 我想通过将 Label textProperty 绑定(bind)到 simpleIn
我有一个 simpleIntegerProperty 表示以秒为单位的数量,我想以 hh:mm:ss 格式表示。 我想通过将 Label textProperty 绑定(bind)到 simpleIn
当 TQuery 后代字段的 FieldType 是 ftBoolean 时,如何让 Delphi 7 返回“0”或“1”?默认情况下返回“TRUE”或“FALSE”,即 Query1.Fields[
我正在创建一个简单的控件来浏览和采样音频文件。我想使用ObjectProperty这样我就可以绑定(bind)负责播放文件的按钮的一些属性: PlayButton.disableProperty.bi
好的,我有一个类旨在管理 Azure 云队列消息,插入工作正常: public async void Insert(string message) { await Qu
我是一名优秀的程序员,十分优秀!