2016-08-05 48 views
0

我正在使用Btrieve和Pervasive SQL控制中心來創建表。該表有3列:char 20,char 20,& char 50.第一列是主鍵。當我通過代碼插入記錄時,第二列的第一個字符總是缺失。我認爲,因爲第一列是覆蓋它。在調查爲什麼我加載文件信息編輯器。文件規範中列出的記錄長度爲92。這是沒有意義的我,因爲我清楚地定義的表爲具有90創建表格時,PSQL v9中的記錄長度如何受到影響?

我也得到錯誤22表示的不同記錄長度的記錄長度我代碼中的緩衝區和實際的表記錄長度。

爲了固定在第二列中的缺少的第一個字符,我改變緩衝器中的代碼,以便第一列的長度爲21個字符。我也改變了第三列是51來修復錯誤22

如何記錄長度都將置92在我的例子,當我創建表時明確規定的記錄長度爲90?

回答

1

你是什麼人最有可能看到的是在Btrieve的/普適的「空」處理的假象。
當您使用Btrieve創建文件時,您完全按字節逐個佈局記錄。當「真空」支持被添加到Pervasive引擎時,創建爲可爲空(默認)的任何列都在Btrieve文件中的字段前加了一個額外的字節。這允許引擎知道該字段是空字符串還是空字符串。
因爲你的表有三列,應該已經三個額外的字節,但由於其中一列是主鍵,它不是所有的空,所以你只得到了兩個額外的字節。
在你的情況下,如果你有一個現有的Btrieve文件並且創建了SQL定義,那麼在某些情況下這些額外的字段就不會存在。
你有兩個選擇:

  • 重建具有「真正的零」支持臺關閉。這是通過在您的Create Table命令之前發出Set TrueNullCreate = Off命令完成的。

  • 添加Not Null所有列在表中並重新創建表。

相關問題