2010-04-20 25 views
5

Tôi cũng đã biết hết và cũng có câu trả lời cho câu trả lời nhưng không may mắn:/Không thể chuyển đổi giá trị tham số từ Hướng dẫn thành một chuỗi

Tuần trước mọi thứ hoạt động tốt.

Tôi đã hoàn nguyên trên kho lưu trữ, tạo lại tableadapter vv ... không có gì hữu ích.

Khi tôi cố gắng tiết kiệm trong ứng dụng của tôi, tôi nhận được một SystemInvalidCastException vào thời điểm này:

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** 
    } 
} 

Mọi thứ đều bị mắc kẹt ở đây vì một Guid - và tôi đã kiểm tra xem trước DataTable với công cụ kính lúp của nó thực sự là một Guid đúng trong cột của datatable - không thể được chuyển đổi thành một chuỗi ??? Làm thế nào điều đó có thể xảy ra?

+0

Vui lòng chỉ cho chúng tôi SQL của bạn. – SLaks

+0

Hãy hiển thị cho chúng tôi ngoại lệ và theo dõi ngăn xếp và hiển thị cho chúng tôi giá trị của userID mà bạn đang chuyển sang phương thức. –

+1

@userId có phải là một hướng dẫn không? Sau đó, '[" @userId "]. Giá trị' phải được gán với giá trị Guid thay vì với Chuỗi. – Regent

Trả lời

6

Đó là một cách khác. ID người dùng của bạn là một chuỗi và bạn cần giá trị GUID cho các thông số của mình:

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

Cung cấp UserId nằm trong một trong các định dạng được hỗ trợ cho GUID. Nhà xây dựng supports many formats.

Chỉnh sửa, dựa trên ý kiến ​​dưới đây:

Nó chỉ ra rằng bạn đang yêu cầu làm thế nào để chạy một tuyên bố chọn như:

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

Tôi nghĩ bạn nên kiểm tra lại DataModel của bạn và tìm một giải pháp .

+0

userId là varchar ở đây không có Guid. – Elisabeth

+0

@ user320460: Đó là lý do tại sao bạn cần phải chuyển đổi nó thành một hướng dẫn. Các tham số là Guids, phải không? –

+0

Trên suy nghĩ thứ hai, tốt hơn hãy cho chúng tôi thấy một ví dụ về giá trị của userId. –

2

Bạn đã thử:

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); 

Hy vọng nó giúp !!!

Các vấn đề liên quan