我创建了一个GridView,目的实现与数据库中的数据绑定。并增加了删除按钮,以便单击哪行删除按钮就可以删除改数据库所有对应的记录数据。但是,却发生了一个 将字符串转换为 uniqueidentifier 时失败 的异常 ,不明白,请高手指教~!代码如下:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Admin_ManageUser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GvUser();
} public void GvUser()
{
DataSet ds = new DataSet();
string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
using(SqlConnection conn = new SqlConnection(sConnectionString))
{
SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
da.Fill(ds);
}
gv_User.DataSource=ds;
gv_User.DataBind();
} protected void gv_User_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Del")
{
int iIndex = Convert.ToInt16(e.CommandArgument);
string sUserID = gv_User.DataKeys[iIndex].ToString();
string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
string sSql = "Delete from tbUser where UserID = @UserID";
using (SqlConnection conn = new SqlConnection(sConnectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sSql, conn))
{
cmd.Parameters.AddWithValue("@UserID", sUserID);
ClientScript.RegisterStartupScript(Page.GetType(),"",string.Format("<script>alert('删除了{0}条记录');</script>",cmd.ExecuteNonQuery()));
SetBind();
}
}
}
} private void SetBind()
{
DataSet ds = new DataSet();
string sConnection = @"server=(local)SQLEXPRESS;database=Form;Trusted_Connection=True";
using (SqlConnection conn = new SqlConnection(sConnection))
{
SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
da.Fill(ds);
}
gv_User.DataSource = ds;
gv_User.DataBind();
}
}
这是发生的异常信息:“/Forum”应用程序中的服务器错误。
--------------------------------------------------------------------------------将字符串转换为 uniqueidentifier 时失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 将字符串转换为 uniqueidentifier 时失败。源错误:
行 45: {
行 46: cmd.Parameters.AddWithValue("@UserID", sUserID);
行 47: ClientScript.RegisterStartupScript(Page.GetType(),"",string.Format("<script>alert('删除了{0}条记录');</script>",cmd.ExecuteNonQuery()));
行 48: SetBind();
行 49: }
源文件: e:\Projects\Forum\Admin\ManageUser.aspx.cs 行: 47 堆栈跟踪:
[SqlException (0x80131904): 将字符串转换为 uniqueidentifier 时失败。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +95
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3430
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +186
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1139
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +334
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +407
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +149
Admin_ManageUser.gv_User_RowCommand(Object sender, GridViewCommandEventArgs e) in e:\Projects\Forum\Admin\ManageUser.aspx.cs:47
System.Web.UI.WebControls.GridView.OnRowCommand(GridViewCommandEventArgs e) +96
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +121
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +215
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3839
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Admin_ManageUser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GvUser();
} public void GvUser()
{
DataSet ds = new DataSet();
string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
using(SqlConnection conn = new SqlConnection(sConnectionString))
{
SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
da.Fill(ds);
}
gv_User.DataSource=ds;
gv_User.DataBind();
} protected void gv_User_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Del")
{
int iIndex = Convert.ToInt16(e.CommandArgument);
string sUserID = gv_User.DataKeys[iIndex].ToString();
string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
string sSql = "Delete from tbUser where UserID = @UserID";
using (SqlConnection conn = new SqlConnection(sConnectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sSql, conn))
{
cmd.Parameters.AddWithValue("@UserID", sUserID);
ClientScript.RegisterStartupScript(Page.GetType(),"",string.Format("<script>alert('删除了{0}条记录');</script>",cmd.ExecuteNonQuery()));
SetBind();
}
}
}
} private void SetBind()
{
DataSet ds = new DataSet();
string sConnection = @"server=(local)SQLEXPRESS;database=Form;Trusted_Connection=True";
using (SqlConnection conn = new SqlConnection(sConnection))
{
SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
da.Fill(ds);
}
gv_User.DataSource = ds;
gv_User.DataBind();
}
}
这是发生的异常信息:“/Forum”应用程序中的服务器错误。
--------------------------------------------------------------------------------将字符串转换为 uniqueidentifier 时失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 将字符串转换为 uniqueidentifier 时失败。源错误:
行 45: {
行 46: cmd.Parameters.AddWithValue("@UserID", sUserID);
行 47: ClientScript.RegisterStartupScript(Page.GetType(),"",string.Format("<script>alert('删除了{0}条记录');</script>",cmd.ExecuteNonQuery()));
行 48: SetBind();
行 49: }
源文件: e:\Projects\Forum\Admin\ManageUser.aspx.cs 行: 47 堆栈跟踪:
[SqlException (0x80131904): 将字符串转换为 uniqueidentifier 时失败。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +95
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3430
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +186
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1139
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +334
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +407
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +149
Admin_ManageUser.gv_User_RowCommand(Object sender, GridViewCommandEventArgs e) in e:\Projects\Forum\Admin\ManageUser.aspx.cs:47
System.Web.UI.WebControls.GridView.OnRowCommand(GridViewCommandEventArgs e) +96
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +121
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +215
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3839
解决方案 »
- try-catch 问题,在线等,今日结贴~~~
- viewstate储存的是什么时候的信息
- 新手关于asp,net中DATAGRID的一点问题
- 学习.NET。去哪几个教程站/资料站。希望大家推荐几个
- 高手在哪...帮忙!!!
- 求助:全局的DataTable怎么定义?
- 本人想请一位兼职美工高手,春节前后做一个.net信息管理系统的美工
- 如何判断一个SESSION变量是否为空。
- 一个form里可不可以有两个submit按钮?如果一个是上传一个是检索怎么办?
- 以前学ASP(VBS)想最快速度转向ASP.NET(估计这样用VB代码快点吧)什么书好?怎么学好?
- Xml 能实现这种方式吗?带图,高手请进,速度结帖!
- 三层的问题
你的表里UserID列是uniqueidentifier类型吧
设置参数类型。确保sUserID可以被转化为uniqueidentifier
int iIndex = Convert.ToInt16(e.CommandArgument);
string sUserID = gv_User.DataKeys[iIndex].ToString();sUserID是如果INT型的,转换下看看。提示是字符转换失败,主要是主键的转换。
a2ac9d38-41bf-4172-ac0d-e9219b679567 小王 1 [email protected]
UserGender UserFace UserIsMarried
1 01.jpg False
4eb22e4b-1d2a-4037-93f7-cb7b56b95d4a 小朱 1 [email protected] 1 02.jpg False
这是我数据库中数据~!
string sUserID = gv_User.DataKeys[iIndex].Value.ToString();
...