如何将复选框列表中的多个项目存储到数据库中? [英] How to store multiple items from checkbox list into the database ?
本文介绍了如何将复选框列表中的多个项目存储到数据库中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我正在为学生开发一个图书馆系统,我需要在书中提供TAGS,在ADD书中,我已经使用了一个CHECKBOX LIST(因为标签可以是多个)用于PREDETERMINED TAGS,然后是一个TEXT BOX来添加CUSTOM TAGS。但是我无法将它们之间的,分隔存储到数据库中。
这是我正在使用的代码片段:
protected void butt_addbook_Click(object sender,EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings [dbconnection]。ConnectionString);
con.Open();
string tag =;
字符串查询=插入demo_book_info值('+ txt_bookno.Text +','+ txt_title.Text +','+ txt_bookauthor.Text +','+ tag +' ,'+ txt_bookcopies.Text +','可用');
尝试
{
SqlCommand cmd = new SqlCommand(query,con);
foreach(checkboxlist_tags.Items中的ListItem li)
{
if(li.Selected == true)
{
tag + =,+ li.Text;
}
}
tag + =,+ txt_custom_tags.Text;
cmd.ExecuteNonQuery();
ClientScript.RegisterClientScriptBlock(Page.GetType(),validation,
< script language ='javascript'> alert('Saving is Done!')< / script>);
con.Close();
}
catch(Exception ex)
{
Response.Write(ex.Message);
ClientScript.RegisterStartupScript(Page.GetType(),validation,
< script language ='javascript'> alert('Error!')< / script>);
}
解决方案
问题是您在将所有标签附加到查询之前将查询分配给SqlCommand变量。下面是更新的代码。
protected void butt_addbook_Click(object sender,EventArgs e)
{
SqlConnection con = new的SqlConnection(ConfigurationManager.ConnectionStrings [ DBConnection的]的ConnectionString);
con.Open();
string tag =;
尝试
{
foreach(listItem li in checkboxlist_tags.Items)
{
if(li.Selected == true)
{
tag + =,+ li.Text;
}
}
tag + =,+ txt_custom_tags.Text;
字符串查询=插入demo_book_info值('+ txt_bookno.Text +','+ txt_title.Text +','+ txt_bookauthor.Text +','+ tag +','+ txt_bookcopies.Text +','Available');
SqlCommand cmd = new SqlCommand(query,con);
cmd.ExecuteNonQuery();
ClientScript.RegisterClientScriptBlock(Page.GetType(),validation,
< script language ='javascript'> alert('Saving is Done!')< / script> );
con.Close();
}
catch(Exception ex)
{
Response.Write(ex.Message);
ClientScript.RegisterStartupScript(Page.GetType(),validation,
< script language ='javascript'> alert('Error!')< / script>);
}
你唯一需要做的就是在插入/更新查询之前加上'tag'变量操作代码
因为插入/更新查询的字符串在填充'tag'变量之前已经构建。
如果它不起作用则提供什么你得到的确切错误消息,它将有助于为你提供更好的解决方案。
祝你好运
快乐编码和调试 ...:)
谢谢大家,它现在完美运作!! :)
Hello everyone,
Well i'm developing a library system for students, in which I need to provide TAGS to the books, in the ADD book section, where I've used a CHECKBOX LIST (because tags can be multiple) FOR THE PREDETERMINED TAGS, and then a TEXT BOX to add CUSTOM TAGS. But I'm not able to store them with a "," separation in between into the database.
Here's the piece of code I'm using:
protected void butt_addbook_Click(object sender, EventArgs e) { SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString); con.Open(); string tag = ""; String query = "insert into demo_book_info values ('" + txt_bookno.Text + "','" + txt_title.Text + "','" + txt_bookauthor.Text + "','"+ tag +"','" + txt_bookcopies.Text + "','Available')"; try { SqlCommand cmd = new SqlCommand(query, con); foreach (ListItem li in checkboxlist_tags.Items) { if(li.Selected==true) { tag += "," + li.Text; } } tag += "," + txt_custom_tags.Text; cmd.ExecuteNonQuery(); ClientScript.RegisterClientScriptBlock(Page.GetType(),"validation", "<script language='javascript'>alert ('Saving is Done!')</script>"); con.Close(); } catch (Exception ex) { Response.Write(ex.Message); ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Error!')</script>"); }
解决方案
The problem is that your are assign query to SqlCommand before appending all tags to the query variable. Below is updated code.
protected void butt_addbook_Click(object sender, EventArgs e) { SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString); con.Open(); string tag = ""; try { foreach (ListItem li in checkboxlist_tags.Items) { if(li.Selected==true) { tag += "," + li.Text; } } tag += "," + txt_custom_tags.Text; String query = "insert into demo_book_info values ('" + txt_bookno.Text + "','" + txt_title.Text + "','" + txt_bookauthor.Text + "','"+ tag +"','" + txt_bookcopies.Text + "','Available')"; SqlCommand cmd = new SqlCommand(query, con); cmd.ExecuteNonQuery(); ClientScript.RegisterClientScriptBlock(Page.GetType(),"validation", "<script language="'javascript'">alert ('Saving is Done!')</script>"); con.Close(); } catch (Exception ex) { Response.Write(ex.Message); ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language="'javascript'">alert('Error!')</script>"); }
the only thing you need to do is to put the 'tag' variable manipulation code prior to insert/update query
because string for insert/update query has been build before filling 'tag' variable.
if it doesn't work then provide what kind of exact error msg you are getting, it will help to provide you a better solution.
Good Luck
Happy Coding and debugging... :)
Thanks all of you, its working perfectly now!! :)
这篇关于如何将复选框列表中的多个项目存储到数据库中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文