2013-12-07 61 views
1

我有一個簡單的SQLite表:的SQLite的getchar返回null

CREATE TABLE "Phones" ("Id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , ... , "Type" CHAR(1) NOT NULL) 

然而,當我嘗試檢索值都出現預期之外的「類型」。 「類型」始終爲NULL。

這裏的C#代碼:

var phoneType = reader.GetChar(reader.GetOrdinal("Type")) 

然而,如果不是的getchar我使用的GetString它按預期工作:

var phoneType = reader.GetString(reader.GetOrdinal("Type"))[0] 

的obviouse問題是我做錯了什麼,當我使用的getchar()?

+0

什麼reader.GetOrdinal(「類型」)的價值? –

+0

@AzharKhorasany GetOrdianal(「Type」)返回select語句中「Type」列的序號位置。例如:在以下語句「SELECT Id,鍵入FROM Phones」GetOrdianal(「Type」)將返回1作爲序數位置。 GetOrdinal(「Id」)將返回0. – Vadim

+0

是在SQLite中鍵入一個關鍵字?嘗試使用其他名稱並查看它是否有效。 –

回答

1

documentation說:進行

任何轉換;因此檢索到的數據必須已經是角色或強制角色。

CHAR(1)不是單個字符,而是包含單個字符的字符串。

(請注意,SQLite的,本地字符始終是一個字符串的一部分;使用類型CHARwould behave the same

+0

在提交問題之前,我看到了相同的文檔。我的問題不是關於SQLite CHAR類型。這是一個關於SQLite ADO.NET採用者的問題。 GetChar方法位於從DbDataReader派生的SQLiteDataReader中。 http://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader.getchar(v=vs.110).aspx – Vadim

+0

你的答案仍然不能解釋爲什麼GetChar不起作用。 – Vadim