2011-06-20 26 views
1

首先,我喜歡指定數據類型,我鄙視AddWithValue函數。C#:SqlCeParameter用於nVarChar的DbType?

我在.NET 4.0上構建一個SqlCeServer 3.5本地數據庫應用程序,它將在用戶PC上運行。

當我創建表格時,我使用來指定我的字符串字段。

這似乎工作正常,我可以打開表來驗證一切運作良好在Microsoft SQL Server管理工作室2008年

當我將數據插入我的表,我用

public static SqlCeParameter ParameterString(string ColumnName, string value) { 
    SqlCeParameter p = new SqlCeParameter(); 
    p.ParameterName = string.Format("@{0}", ColumnName); 
    p.DataType = DbType.String; 
    p.Size = 50; 
    p.Value = value; 
    return p; 
} 

當我插入這個數據,沒有錯誤,但該數據未插入。其他數據類型(int,DateTime,float等)插入沒有問題。

問:是否有其他一些DbType我需要指定插入爲NVarChar

回答

3

DbType枚舉是通用的所有數據庫,所以它不包含特定的SQL Server的所有數據類型。使用一個SqlDbType

SqlCeParameter p = new SqlCeParameter(ColumnName, SqlDbType.NVarChar, 50); 
p.Value = value; 
+0

你們是快!那麼,我應該爲'SqlCeParameter'將'SqlDbType.NVarChar'轉換回'DbType'嗎?現在,VS2010告訴我,「*不能隱式地將類型'System.Data.SqlDbType'轉換爲'System.Data.DbType'。存在明確的轉換(你是否誤判了一個轉換?)*」如果我正在轉換,是在DbType枚舉中不可用? – jp2code

+0

查看每個元數據,我發現'SqlDbType.NVarChar'的值是12,'DbType'的元數據下的值是'Int64'。 ** {UGH!} **當然不是我會想到的! – jp2code

+1

@ jp2code:據此構造函數應該採用'SqlDbType',而不是'DbType':http://msdn.microsoft.com/en-US/library/cbw9e693%28v=VS.80%29.aspx – Guffa

1

是,

SqlDbType.NVarChar 

我希望這有助於

2

出於某種原因,還有,你可以用它來設置類型,DbTypeSqlDbType兩個屬性。根據MSDN:

SqlDbType和DbType是鏈接的。因此,設置DbType將SqlDbType更改爲支持的SqlDbType。

所以SqlDbType是主要類型,設置只是DbType將其更改爲接近。

你也可能想在this post,他們有一個問題,閱讀起來時指定Length有史以來最偉大的255

相關問題