我似乎无法将gridview中的数据插入数据库。我运行它,它运行顺利但我的数据库中没有数据输入。我的错误在哪里?我用于循环,因为gridview每个事务可能有多个项目。谢谢!
protected void btnSave_Click(object sender, EventArgs e)
{
string transIDs = transID.Text;
string datefiled = lblDateFiled.Text;
string requisitioner = txtName.Text;
string company = txtComp.Text;
string branch = txtBranch.Text;
string bu = txtBU.Text;
string dept = txtDept.Text;
string sec = txtSec.Text;
string reason = txtReason.Text;
int accept = 0;
if(rblAccept.SelectedIndex == 0)
{
accept = 1;
}
else
{
accept = 0;
}
//foreach (GridViewRow row in gvModal.Rows)
//{
for(int i = 0; i < gvModal.Rows.Count; i++)
{
string dateA = DateTime.Now.ToString("yyyy-MM-dd");
Utility u = new Utility();
string conn = u.connect();
Label type = (Label)gvModal.Rows[i].Cells[1].FindControl("lbltype");
Label model = (Label)gvModal.Rows[i].Cells[2].FindControl("lblModel");
Label quantity = (Label)gvModal.Rows[i].Cells[3].FindControl("lblQuan");
Label unit = (Label)gvModal.Rows[i].Cells[4].FindControl("lblUnit");
//string type = row.Cells[1].Text;
//string model = row.Cells[2].Text;
//string quantity = row.Cells[3].Text;
//string unit = row.Cells[4].Text;
SqlConnection connUser = new SqlConnection(conn);
SqlCommand read = connUser.CreateCommand();
string query = "INSERT INTO Mosef_Alert values (@Mosef_No, @Branch, @BU, @Dept, @Section, @Requisitioner, @Accepted, @Date_Accepted, @Reason, @MOSEF_Date, @type, @model, @quantity, @unit)";
connUser.Open();
read.CommandText = query;
read.Parameters.Add(new SqlParameter("Mosef_No", transIDs));
read.Parameters.Add(new SqlParameter("Branch", branch));
read.Parameters.Add(new SqlParameter("BU", bu));
read.Parameters.Add(new SqlParameter("Dept", dept));
read.Parameters.Add(new SqlParameter("Section", sec));
read.Parameters.Add(new SqlParameter("Requisitioner", requisitioner));
read.Parameters.Add(new SqlParameter("Accepted", accept));
read.Parameters.Add(new SqlParameter("Date_Accepted", dateA));
read.Parameters.Add(new SqlParameter("Reason", reason));
read.Parameters.Add(new SqlParameter("MOSEF_Date", lblDateFiled.Text));
read.Parameters.Add(new SqlParameter("type", type));
read.Parameters.Add(new SqlParameter("model", model));
read.Parameters.Add(new SqlParameter("quantity", quantity));
read.Parameters.Add(new SqlParameter("unit", unit));
//read.ExecuteNonQuery();
read.Parameters.Clear();
}
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script type ='text/javascript'>");
sb.Append("alert('Records Updated');");
sb.Append("$('editModal').modal('hide');");
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "EditHideModalScript", sb.ToString(), false);
}
答案 0 :(得分:1)
您需要将@
添加为参数名称,如
read.Parameters.Add(new SqlParameter("@Mosef_No", transIDs));
read.Parameters.Add(new SqlParameter("@Branch", branch));
read.Parameters.Add(new SqlParameter("@BU", bu));
read.Parameters.Add(new SqlParameter("@Dept", dept));
read.Parameters.Add(new SqlParameter("@Section", sec));
read.Parameters.Add(new SqlParameter("@Requisitioner", requisitioner));
read.Parameters.Add(new SqlParameter("@Accepted", accept));
read.Parameters.Add(new SqlParameter("@Date_Accepted", dateA));
read.Parameters.Add(new SqlParameter("@Reason", reason));
read.Parameters.Add(new SqlParameter("@MOSEF_Date", lblDateFiled.Text));
read.Parameters.Add(new SqlParameter("@type", type));
read.Parameters.Add(new SqlParameter("@model", model));
read.Parameters.Add(new SqlParameter("@quantity", quantity));
read.Parameters.Add(new SqlParameter("@unit", unit));
您传递的是控件(Label)而不是控件值(Label.Text),可能是拼写错误。更新如下:
read.Parameters.Add(new SqlParameter("@type", type.Text));
read.Parameters.Add(new SqlParameter("@model", model.Text));
read.Parameters.Add(new SqlParameter("@quantity", quantity.Text));
read.Parameters.Add(new SqlParameter("@unit", unit.Text));
答案 1 :(得分:0)
你在代表命令时错过了@
;使用方式如下:
read.Parameters.Add(new SqlParameter("@Mosef_No", transIDs));
read.Parameters.Add(new SqlParameter("@Branch", branch));
read.Parameters.Add(new SqlParameter("@BU", bu));
MSDN说:当你使用SqlParameter构造函数的这个重载时要小心 指定整数参数值。因为这个过载需要一个 类型为Object的值,必须将整数值转换为Object 当值为零时键入,如下面的C#示例所示。
您可以使用以下相同的内容:
read.Parameters.Add("@Mosef_No",SqlDbType.Int).Value= transIDs;
read.Parameters.Add("@Branch",SqlDbType.VarChar).Value= branch;
read.Parameters.Add("@BU",SqlDbType.Char).Value= bu;
其中SqlDbType
是一个帮助您指定数据类型的枚举。