使用GridView commandname imagebutton C#插入MySql [英] Insert into MySql using GridView commandname imagebutton C#
问题描述
我想从Gridview中的标签中获取数据并将它们插入MySql数据库。当用户单击图像按钮时,数据将被插入到MySql DB中。我似乎无法用这些代码实现:
//后端
< pre lang =c#> protected void GridView1_RowCommand( object sender,GridViewCommandEventArgs e)
{
if (e.CommandName == 插入)
{
int i ;
for (i = 0 ; i < ; GridView1.Rows.Count; i ++)
{
GridViewRow row = GridView1.Rows [i];
string bookTitle =(row.FindControl( book) as Label).Text;
string date =(row.FindControl( date) as Label).Text;
string name =(row.FindControl( name) as Label).Text;
string memberID =(row.FindControl( memberID) as Label).Text;
string phone =(row.FindControl( phone) as Label).Text;
string Query = 插入c_records(bookTitle,date,name,memberID,phone)值(@ bookTitle,@ date,@ name,@ _!ID,@ phone);
MySqlCommand cmd = new MySqlCommand(Query,conn);
cmd.Parameters.AddWithValue( @ bookTitle,bookTitle);
cmd.Parameters.AddWithValue( @ date,date);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.Parameters.AddWithValue( @ phone,phone);
cmd.ExecuteNonQuery();
BindData();
}
}
}
//前线结束
< asp:GridView ID = GridView1 runat = server BackColor = #DEBA84 BorderColor = #DEBA84 BorderStyle = 无 BorderWidth = 1px CellPadding = 3 CellSpacing = 2 AutoGenerateColumns = False 宽度 = 721px showfooter = true OnRowUpdating = GridView1_RowUpdating 高度 = 411px OnRowCommand = GridView1_InsDel >
< 列 >
< asp: TemplateField HeaderText = Id >
< ItemTemplate >
< asp:Label ID = Label5 runat = 服务器 正文 =' <% #Eval( id)%>' > < / a sp:标签 >
< / ItemTemplate >
< / asp:TemplateField >
< < span class =code-leadattribute> asp:TemplateField HeaderText = 书名 >
< ItemTemplate >
< span class =code-keyword>< asp:Label ID = book runat = server 文字 =' <% #Eval( bookTitle)%>' > < / asp:标签 >
< / ItemTemplate >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 日期 >
< ItemTemplate >
< asp:标签 ID = date runat = server 文本 =' <% #Eval( date)%>' > < / asp:标签 >
< / ItemTemplate >
< span class =code-keyword>< / asp:TemplateField >
< asp:TemplateField HeaderText = 名称 >
< ItemTemplate >
< asp:标签 ID = 名称 runat = server 文字 =' <% #Eval( 名称)%>' > < / asp:标签 >
< / ItemTemplate >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 会员ID >
< ItemTemplate >
< asp:标签 ID = memberID runat = server 文本 =' <% #Eval( memberID)%>' > < / asp:Label >
< / ItemTemplate > ;
< / asp:TemplateField >
< asp:TemplateField HeaderText = 电话 >
< ItemTemplate >
< asp:标签 ID = phone runat = server 文字 =' & lt;% #Eval( phone)%>' > < / asp:Label >
< / ItemTemplate >
< / asp :TemplateField >
< asp:TemplateField HeaderText = 退出 >
< span class =code-keyword>< ItemTemplate >
< asp:ImageButton OnClientClick = return abc(this); ID = signOut CommandName = 插入 < span class =code-attribute> AlternateText = Available ImageUrl = 〜/ Images / unclick.png runat = server / >
< / ItemTemplate >
< / asp:TemplateField >
< asp:TemplateField >
< ItemTemplate >
< asp:LinkButton ID = 提交 runat = server 文字 = 提交 CommandName = 更新 > < img src = Images / save.jpg / > < / asp:LinkButton >
< / ItemTemplate >
< / asp:TemplateField >
如果有任何其他解决方案,请不要犹豫告诉我。
您似乎在一个命令中组合了两个查询。不要那样做。而是单独运行bith。您似乎也设置了两次参数的值。至少在快速查看时我没有理由这样做。
另请注意,某些参数在命名时不匹配。
所以代替
conn.Open();
string q4 = 插入c_records( bookTitle,date,name,memberID,phone)值(@ bookTitle,@ date,@ name,@ _!ID,@ phone);;
string q5 = 从客户中删除客户其中name = @name和memberID = @memberID;;
MySqlCommand cmd = new MySqlCommand(q4 + q5,conn);
cmd.Parameters.AddWithValue( @ date,date);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.Parameters.AddWithValue( @ phone,phone);
cmd.Parameters.AddWithValue( @ book,bookTitle);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters [ @ book]。Value = bookTitle;
cmd.Parameters [ @ date]。Value = date;
cmd.Parameters [ @ name]。Value = name;
cmd.Parameters [ @ memberID]。Value = memberID;
cmd.Parameters [ @ phone]。值=电话;
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
你应该有类似
conn.Open();
string q4 = 插入c_records(bookTitle,date,name,memberID,phone)值(@ bookTitle,@ date,@ name,@ _!ID,@ phone);;
MySqlCommand cmd = new MySqlCommand(q4,conn);
cmd.Parameters.AddWithValue( @ bookTitle,bookTitle);
cmd.Parameters.AddWithValue( @ date,date);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.Parameters.AddWithValue( @ phone,phone);
cmd.ExecuteNonQuery();
string q5 = 从姓名= @name和memberID = @memberID的客户中删除客户;;
cmd = new MySqlCommand(q5,conn);
cmd.Parameters.AddWithValue( @ name,name);
cmd.Parameters.AddWithValue( @ memberID,memberID);
cmd.ExecuteNonQuery();
...
I want to fetch the data from labels in Gridview and insert them to MySql database. When users click the imagebutton, the data will be inserted to MySql DB. I can't seem to make it happen with these codes:
//The Backend
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert")
{
int i;
for (i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
string bookTitle = (row.FindControl("book") as Label).Text;
string date = (row.FindControl("date") as Label).Text;
string name = (row.FindControl("name") as Label).Text;
string memberID = (row.FindControl("memberID") as Label).Text;
string phone = (row.FindControl("phone") as Label).Text;
string Query = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone)";
MySqlCommand cmd = new MySqlCommand(Query, conn);
cmd.Parameters.AddWithValue("@bookTitle", bookTitle);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.ExecuteNonQuery();
BindData();
}
}
}
//The Front End
<asp:GridView ID="GridView1" runat="server" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" AutoGenerateColumns="False" Width="721px" showfooter="true" OnRowUpdating="GridView1_RowUpdating" Height="411px" OnRowCommand="GridView1_InsDel">
<Columns>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Book Title">
<ItemTemplate>
<asp:Label ID="book" runat="server" Text='<%# Eval("bookTitle") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="date" runat="server" Text='<%# Eval("date") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="name" runat="server" Text='<%# Eval("name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Member ID">
<ItemTemplate>
<asp:Label ID="memberID" runat="server" Text='<%# Eval("memberID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Phone">
<ItemTemplate>
<asp:Label ID="phone" runat="server" Text='<%# Eval("phone") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Sign Out">
<ItemTemplate>
<asp:ImageButton OnClientClick="return abc(this);" ID="signOut" CommandName="Insert" AlternateText="Available" ImageUrl="~/Images/unclick.png" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="submit" runat="server" Text="Submit" CommandName="Update"><img src="Images/save.jpg" /></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
Please don't hesitate to tell me if there are any other solution.
You seem to combine both queries in a single command. DOn't do that. Instead run bith separately. You also seem to set the values for the parameters twice. At least when having a quick look I see no reason for that.
Also note that some of the parameters had a mismatch in naming.
So instead of
conn.Open(); string q4 = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone);"; string q5 = "delete customers from customers where name = @name and memberID = @memberID;"; MySqlCommand cmd = new MySqlCommand(q4 + q5, conn); cmd.Parameters.AddWithValue("@date", date); cmd.Parameters.AddWithValue("@memberID", memberID); cmd.Parameters.AddWithValue("@phone", phone); cmd.Parameters.AddWithValue("@book", bookTitle); cmd.Parameters.AddWithValue("@name", name); cmd.Parameters["@book"].Value = bookTitle; cmd.Parameters["@date"].Value = date; cmd.Parameters["@name"].Value = name; cmd.Parameters["@memberID"].Value = memberID; cmd.Parameters["@phone"].Value = phone; MySqlDataAdapter adp = new MySqlDataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds);
You should have something like
conn.Open(); string q4 = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone);"; MySqlCommand cmd = new MySqlCommand(q4, conn); cmd.Parameters.AddWithValue("@bookTitle", bookTitle); cmd.Parameters.AddWithValue("@date", date); cmd.Parameters.AddWithValue("@name", name); cmd.Parameters.AddWithValue("@memberID", memberID); cmd.Parameters.AddWithValue("@phone", phone); cmd.ExecuteNonQuery(); string q5 = "delete customers from customers where name = @name and memberID = @memberID;"; cmd = new MySqlCommand(q5, conn); cmd.Parameters.AddWithValue("@name", name); cmd.Parameters.AddWithValue("@memberID", memberID); cmd.ExecuteNonQuery(); ...
这篇关于使用GridView commandname imagebutton C#插入MySql的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!