【发布时间】:2014-04-20 07:55:36
【问题描述】:
我在 MS SQL Server Management Studio 中执行此操作:
SELECT TOP 2 * FROM searchdb.dbo.tblnames;
我收到了两个包含完整信息的帖子。
当我在网页上执行相同操作时,我会得到所有信息除了的文本,它是空白的。
数据库中文本列的类型有:
ntext
我正在使用的连接字符串:
Driver={SQL Server};Server=localhost;Database=searchdb;Uid=myuser;Pwd=mypass;
我也试过:
Driver={SQL Server Native Client 11.0};Server=localhost;Database=searchdb;Uid=myuser;Pwd=mypass;
得到相同的结果。我不知道“SQL Server”和“SQL Server Native Client 11.0”之间的区别,只是“SQL Server”在 ODBC 数据源列表中的日期较新。
发生了什么事? 为什么会返回空白文本?我该如何解决这个问题?
编辑:这是我在 ASP 网页上使用的代码:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={SQL Server};Server=localhost;Database=searchdb;Uid=myuser;Pwd=mypass;"
Set RecSet = Conn.Execute("SELECT TOP 2 * FROM tblnames;")
Response.Write "ID: "& RecSet("ID") &"<br>"
Response.Write "Name: "& RecSet("name") &"<br>"
Response.Write "Mark: "& RecSet("mark") &"<br>"
RecSet.MoveNext
Response.Write "ID: "& RecSet("ID") &"<br>"
Response.Write "Name: "& RecSet("name") &"<br>"
Response.Write "Mark: "& RecSet("mark") &"<br>"
Set RecSet = Nothing
ID 和 Mark 列都具有“int”数据类型并且可以正常显示,而“name”列是空白的。
编辑 2:
Users with less than 10 reputation can't answer their own question
for 8 hours after asking. You can answer 3/15/2014 4:16:50 AM. Until
then please use comments, or edit your question instead.
您必须在 stackoverflow 上创建一个帐户(以前不需要),而且您无法在新帐户上回答自己的问题,这很愚蠢。我希望某些模组不要编辑这篇文章。如果您的系统出现问题,人们可以指出这一点很重要。
总之,答案如下:
自我回答:
我将连接字符串更改为:
Provider=SQL Server Native Client 11.0;Server=localhost;Database=searchdb;Uid=myuser;Pwd=mypass;
现在一切正常。
我不知道为什么当我将它用作“驱动程序”时它不能正常工作,但无论如何。请注意,“Provider=SQL Server”根本不起作用,而“Driver={SQL Server}”与“Driver={SQL Server Native Client 11.0}”完全相同(即使用空白文本)。
不知道 Provider 与 Driver 有何不同。控制面板 > 管理工具 > ODBC 数据源中的任何地方都没有提到“提供程序”。
经过一些测试,Driver 和 Provider 似乎也一样快,所以使用 Driver 没有任何好处,它只是坏了。
【问题讨论】:
-
显示用于显示 nText 列内容的代码。
-
附带说明,请不要使用
ntext,它已被弃用多年,仅为向后兼容而存在。如果需要,请改用nvarchar(max) -
我正在使用旧的 ASP 代码,它正在使用旧的 Access 数据库,最后认为是时候改用现代数据库了。在对 MySQL 感到头疼之后,我选择了 MS SQL。我使用 ntext 的原因是因为我让 Access 使用他们的向导自动将自身转换为 MSSQL。我宁愿不必手动遍历所有字段并将 ntext 更改为 nvarchar。真的那么重要吗?如果是,为什么以及有没有办法自动完成?稍后将发布 ASP 代码,请稍等。
-
代码已添加,我认为那里没有任何问题。特别是因为它适用于 Access 数据库。
标签: sql sql-server database odbc