2010-04-20 78 views
5

我在我的知識的結束和google搜索的答案太多,但沒有運氣:/未能參數值從一個GUID轉換爲字符串

周前一切運行良好。

我在存儲庫上做了恢復,重新創建了tableadapter等等......沒有任何幫助。

當我嘗試在我的應用程序,以節省我得到在這一點上的SystemInvalidCastException:

PersonListDataSet.cs:

partial class P_GroupTableAdapter 
{ 
    public int Update(PersonListDataSet.P_GroupDataTable dataTable, string userId) 
    { 
     this.Adapter.InsertCommand.Parameters["@userId"].Value = userId; 
     this.Adapter.DeleteCommand.Parameters["@userId"].Value = userId; 
     this.Adapter.UpdateCommand.Parameters["@userId"].Value = userId; 

     return this.Update(dataTable); **<-- Exception occurs here** 
    } 
} 

一切都被困在這裏,因爲一個GUID - 我檢查了數據表與預覽放大鏡工具它真的是一個真正的Guid在數據表的列 - 不能轉換爲字符串?這怎麼可能發生?

+0

請向我們展示您的SQL。 – SLaks 2010-04-20 12:06:47

+0

請向我們展示異常和堆棧跟蹤,並向我們顯示您傳遞給方法的userID的值。 – 2010-05-20 08:35:40

+1

@userId應該是一個Guid?然後'[「@userId」]。值應該被賦值爲Guid值而不是String。 – Regent 2010-05-20 08:43:23

回答

6

這是相反的方式。你的用戶標識符是一個字符串,你需要爲你的參數的GUID值:

Parameters["@userId"].Value = new Guid(userId); 

提供用戶ID是在一個GUID支持的格式之一。構造函數supports many formats

編輯,基於以下意見:

事實證明,你是問如何運行SELECT語句,如:

SELECT .... 
WHERE '{BB6DFF45-FDA7-4155-86D0-0CBF129A9104}' = `domainname\\jondoe` 

我認爲你應該重新檢查你的數據模型,並找到解決辦法。

+0

userId是varchar這裏沒有Guid。 – Elisabeth 2010-04-20 13:31:04

+0

@ user320460:這正是您需要將其轉換爲Guid的原因。參數是Guids,對吧? – 2010-04-20 14:07:17

+0

第二個想法,更好地向我們展示userId的一個示例值。 – 2010-04-20 14:08:57

2

您是否嘗試過:

this.Adapter.InsertCommand.Parameters["@userId"].Value = new Guid(userId); 
this.Adapter.DeleteCommand.Parameters["@userId"].Value = new Guid(userId); 
this.Adapter.UpdateCommand.Parameters["@userId"].Value = new Guid(userId); 

希望它可以幫助!

相關問題