2012-07-31 139 views
1

当我尝试在ListView中编辑我的文本并随后在数据库中更新它时,我正面临此错误。此错误消息显示当我点击ListView中的更新按钮时。由于我的UserID是唯一标识符,因此无法更新到我的数据库。但我真的不知道在我的代码中做了哪些更改。System.Data.SqlClient.SqlException:不允许将数据类型sql_variant隐式转换为uniqueidentifier。

我的错误信息表明这一点:在的.cs

Implicit conversion from data type sql_variant to uniqueidentifier is not allowed. Use the CONVERT function to run this query. 

我的SQL语句:

protected void updateComment(object sender, ListViewUpdateEventArgs e) 
{ 

    MembershipUser currentUser = Membership.GetUser(); 
    Guid currentUserId = (Guid)currentUser.ProviderUserKey; 

    var ID= ListView1.DataKeys[e.ItemIndex].Value.ToString(); 

    string connectionString = ConfigurationManager.ConnectionStrings["ASPNETConnectionString"].ConnectionString; 
    SqlConnection myConnect = new SqlConnection(connectionString); 

    string updateSql = "UPDATE Review set ContentRev [email protected] WHERE ID = @ID"; 

    using (SqlConnection myConnection = new SqlConnection(connectionString)) 
    { 
     myConnection.Open(); 

     SqlCommand myCommand = new SqlCommand(updateSql, myConnection); 
     myCommand.Parameters.AddWithValue("@ID", ID); 
     myCommand.Parameters.AddWithValue("@ContentRev ", TextBox1.Text.Trim()); 

     myCommand.ExecuteNonQuery(); 

     myConnection.Close(); 

     ListView1.DataBind(); 
     } 

我的用户ID数据类型是对象和ContentRev是字符串。

+0

不确定你为什么提到用户的ID?它不是SQL的一部分。 – 2012-07-31 12:58:16

回答

4

这是你的问题:

var ID = ListView1.DataKeys[e.ItemIndex].Value.ToString(); 

如果这是一个唯一标识符(或GUID),它应该阅读:

Guid ID = new Guid(ListView1.DataKeys[e.ItemIndex].Value.ToString()); 

其实,我觉得var ID将工作,只要在右侧是一个GUID。

+0

明确地看起来像这样,这使它成为一个奇怪的错误信息。 – 2012-07-31 12:59:24

+0

我改变了你的建议代码,但遇到了这个新的错误:System.FormatException:Guid应该包含32个数字,4破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。 – kelly 2012-07-31 17:23:52

+0

你能举一个例子说明这个领域是什么吗? – 2012-07-31 19:19:52

相关问题