2011-11-26 116 views
0

我一直在试图插入一个巨大的文字编辑字符串到我的数据库。我正在开发的应用程序允许我的客户从其网站的管理部分创建和编辑他们的网站条款和条件。所以你可以想像,它们非常长。我有18,000多个字符的长度,并且现在在尝试添加另一个文本时已经收到错误。经典ASP/MySQL - 参数问题

我收到的错误是这样的:

ADODB.Command error '800a0d5d' 
Application uses a value of the wrong type for the current operation 

指向我的应用程序的一部分,特别是Set newParameter行:

Const adVarChar = 200 
Const adParamInput = 1 
Set newParameter = cmdConn.CreateParameter("@policyBody", adVarChar, adParamInput, Len(policyBody), policyBody) 
cmdConn.Parameters.Append newParameter 

现在,这个政策我创造,这是目前如果是18,000多个字符,则只有一半完整。它可以跳到50-60,000!我尝试使用adLongVarChar = 201 ADO类型,但这仍然没有解决它。

我是否为这样一个大型项目做正确的事情?如果我做对了,我该如何解决这个问题? ......或者如果我做错了什么,那么正确的是什么?

+0

如果你想保存这样的数据,文件驱动的数据库不会变得更好,因为它只是很少关系的大型连续文件(用户 - >协议)? –

+0

你正在写入MySQL或SQL服务器?无论哪种方式,表格定义是什么? – billinkc

+0

表格列设置为LONGTEXT。我尝试了BLOB,但它返回日语,所以我回去了。请问耶稣,你可以定义“文件驱动数据库”吗?我正在使用文本编辑器和数据库,因为我需要用户格式的文本(粗体,颜色和缩进)。 – TheCarver

回答

1

尽量避免将文档放入数据库中。有时候这是一个合理的妥协,序列化的对象,标记片段等。 如果你不想用sql查询文档,唯一的好处是所有的东西都在一个地方。即备份你的数据库,你也备份你的文件,并且你可以专门使用你的数据库连接。

即使没有任何东西是免费的,在您的数据库中装载所有关于这些东西的东西也会让您付出代价。

如果可以的话。 有一个文档表,文件的用户名和文档目录中的内部名称,所以文件名在文件系统中是唯一的,如果可能有多个文件系统,则文件名是路径描述。 然后只需上传并下载所选文档作为文件,在相关数据库实体的get或set上。 您需要了解部署问题,文档目录是否存在,以及运行mysql守护程序的帐户,因为可以看到它,但大多数情况下,保留文档与db分离的问题更容易处理比现在遇到的头部划伤者要多。