将varchar值“{0}”转换为数据类型int时转换失败

时间:2011-11-10 05:20:59

标签: asp.net sql sql-server

我在尝试执行gridview行创建的事件

时出错
<asp:GridView ID="grdDetailedMes" runat="server" Width="800px"
                        ForeColor="black" GridLines="Horizontal" CellPadding="6" BackColor="white"
                        BorderColor="Black" BorderStyle="Solid" ShowHeader="False" OnRowCreated="grdDetailedMes_rowcreated">                      

                    </asp:GridView>

和.cs文件

SqlConnection cnn = new SqlConnection("Data Source=ITS-BA-DC02\\MSSQL2008_SAND;Initial Catalog=TestDB_Chaitanya;User Id=sa;Password=01Explore");
        try
        {
            cnn.Open();
            SqlDataAdapter da = new SqlDataAdapter("select MesDetails from InboxMesgDetails where InboxMesId='{0}'", cnn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            grdDetailedMes.DataSource = ds;
            grdDetailedMes.DataBind();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally
        {
            cnn.Close();
        }

protected void grdDetailedMes_rowcreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            GridView headergrid = (GridView)sender;
            GridViewRow Headergridrow = new GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Insert);

            TableCell Headercell = new TableCell();
            Headercell.Text = "Company";

            Headercell.ColumnSpan = '2';
            Headergridrow.Cells.Add(Headercell);
        }
    }

4 个答案:

答案 0 :(得分:0)

您的错误在这里:

“从InboxMesgDetails中选择MesDetails,其中InboxMesId ='{0}'”

你打算在这上做一个string.format吗?您目前没有用任何东西替换该占位符。现在它正在尝试使用文字{0}。此外,不应该使用单引号,因为看起来你的InboxMesId是一个int

答案 1 :(得分:0)

您的查询没有为{0}传递参数: -

            SqlDataAdapter da = new SqlDataAdapter("select MesDetails from InboxMesgDetails where InboxMesId='{0}'", cnn);

代替{0},你应该使用'@Param',并且应该使用SqlCommand.Parameters Property传递有效参数

你可以这样做 -

  using (SqlConnection connection = new SqlConnection(connectionString))
  {

      String commandText="select MesDetails from InboxMesgDetails where InboxMesId=@ID";
      SqlCommand command = new SqlCommand(commandText, connection);
      command.Parameters.Add("@ID", SqlDbType.Int);
      command.Parameters["@ID"].Value = InboxMesId;
      command.Parameters.Add("@ID", SqlDbType.Int);
      try
      {
          connection.Open();
          int rowsAffected = command.ExecuteNonQuery();
          Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

 }

答案 2 :(得分:0)

您是否正在寻找替换{0}中的内容? 如果是,那么您的代码不会处理此问题。

SQL无法将{}转换为int。

答案 3 :(得分:0)

这应该对您有所帮助SqlDataAdapter