【问题标题】:Send float parameter through SqlDatasource.InsertParameter通过 SqlDatasource.InsertParameter 发送浮点参数
【发布时间】:2015-07-10 19:32:31
【问题描述】:

您好我正在尝试通过 SqlDatasource.InsertParameter 将浮点值插入数据库,但在执行 SqlDatasource.Insert() 函数后,我只看到它的 Integer 部分插入到数据库中。我还调试并检查了在执行 SqlDatasource.Insert() 之前存储在 SqlDatasource 中的值是浮点数。以下是我的代码:

来自数据层的函数:

     public static SqlDataSource DataSourceInsert(string sp, string[,] param)
{
    float f;
    ds = new SqlDataSource();
    if (cns.State != ConnectionState.Open)
        cns.Open();
    ds.ConnectionString = ConfigurationManager.ConnectionStrings["cns"].ConnectionString;
    ds.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
    ds.InsertCommand = sp;

    for (int i = 0; i < param.GetLength(1); i++)
    {
        ds.InsertParameters.Add(param[0, i], param[1, i]);
        ds.InsertParameters[param[0, i]].DefaultValue = param[1, i];
        if(float.TryParse(param[1, i],out f))
            ds.InsertParameters[param[0, i]].Type = System.TypeCode.Double;
    }
    ds.Insert();
    return ds;
}

参数P

protected void DV_ItemInsert(object sender, DetailsViewInsertEventArgs e)
{
    string procname = "spAddandInsertProduct";
    string[,] p = new string[2, 5];
    p[0, 0] = "ProductName";
    p[1, 0] = ((TextBox)((DetailsView)sender).Rows[0].Cells[1].Controls[0]).Text;
    p[0, 1] = "Description";
    p[1, 1] = ((TextBox)((DetailsView)sender).Rows[1].Cells[1].Controls[0]).Text;
    p[0, 2] = "IsPublished";
    p[1, 2] = ((TextBox)((DetailsView)sender).Rows[2].Cells[1].Controls[0]).Text;
    p[0, 3] = "Quantity";
    p[1, 3] = ((TextBox)((DetailsView)sender).Rows[3].Cells[1].Controls[0]).Text;
    p[0, 4] = "Price";
    p[1, 4] = ((TextBox)((DetailsView)sender).Rows[4].Cells[1].Controls[0]).Text;
    ds = SQLInteractor.DataSourceInsert(procname, p);

    ProdAdmin_insertDV.DataSource = ds;
    ProdAdmin_insertDV.DataBind();
    GV_databind();
}

【问题讨论】:

  • param的定义是什么?
  • 那不可读。它是一个字符串数组。
  • 这并不能告诉我param 是什么。另外,请edit在您的问题中提供详细信息。
  • 完成。添加了两个完整的功能

标签: c# asp.net web sqldatasource detailsview


【解决方案1】:

您需要检查两件事: a)您正在使用什么文化设置,这些浮点值的字符串表示是否匹配?这可能是你的错误。 b) 您不太可能需要使用 double 进行操作,以便更好地在 DB 端处理到 double 的转换,或者因为您的数据值需要它。

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2016-05-07
    相关资源
    最近更新 更多