| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:问个问题,请知道的朋友解答
只看楼主 加入收藏
jhmaldini
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-5-11
收藏
 问题点数:0 回复次数:7 
问个问题,请知道的朋友解答
小弟正在学习做系统.
这几天出现了这样一个问题.我把问题简单写一下,请各位高手解答,谢谢.
数据库TestNewsDB中NewsKinds表中有3个字段
其中NewsKindID字段是主键,int类型,长度是4.(注意,是INT型可能问题在这里)
其他字段对程序没有影响,我就省略了.
页面上只有两个控件,一个ListBox,id:ListBox1.一个Button1,id:Button1
page_load事件(这个对问题没影响,我只是为了叫大家看明白后面的程序.)
if(!this.IsPostBack)
{this.BindNewsKindData();}
}
private void BindNewsKindData()
{
this.ListBox1.Items.Clear();
SqlConnection con=new SqlConnection("server=.;uid=sa;pwd=;database=TestNewsDB");
con.Open();
SqlCommand cmd=new SqlCommand("select * from NewsKinds order by KindOrder",con);
SqlDataReader sdr=cmd.ExecuteReader();
this.ListBox1.DataSource=sdr;
this.ListBox1.DataTextField="KindName";
this.ListBox1.DataValueField="NewsKindID";
this.ListBox1.DataBind();
con.Close();
sdr.Close();
问题出在这里button1的点击事件(以下是能删除成功的)
if(this.ListBox1.SelectedIndex>-1)
{
SqlConnection con=new SqlConnection("server=.;uid=sa;pwd=;database=TestNewsDB");
con.Open();
SqlCommand cmd=new SqlCommand("delete from NewsKinds where NewsKindID='"+this.ListBox1.SelectedValue+"'",con);
cmd.ExecuteNonQuery();
con.Close();
this.BindNewsKindData();
但是我改成我习惯用的写法
SqlConnection con=new SqlConnection("server=.;uid=sa;pwd=;database=TestNewsDB");
con.Open();
SqlCommand cmd=new SqlCommand("delete form NewsKinds where NewsKindID=@id",con);
cmd.Parameters.Add(new SqlParameter("@id",SqlDbType.Int,4));
cmd.Parameters["@id"].Value=this.ListBox1.SelectedValue;
cmd.ExecuteNonQuery();
con.Close();
this.BindNewsKindData();
这样运行不出结果来.
因为this.ListBox1.SelectedValue是string类型.(我做的工程里面这么提示)我就把中间的几行改成
SqlCommand cmd=new SqlCommand("delete form NewsKinds where NewsKindID=@id",con);
cmd.Parameters.Add(new SqlParameter("@id",SqlDbType.VarChar,4));
cmd.Parameters["@id"].Value=this.ListBox1.SelectedValue;
还是不行.请高手告诉我怎么用@id这种形式写这段程序.因为我的系统挺大,连接字符串要放在类里面.第1种写法不方便.
搜索更多相关主题的帖子: 数据库 字段 INT 朋友 解答 
2006-05-11 11:08
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 


cmd.Parameters.Add(new SqlParameter("@id",SqlDbType.Int,4));
改成
cmd.Parameters.Add(new SqlParameter("@id",SqlDbType.Int));


欢迎光临我的博客: http://smallfools.blog./default.html
2006-05-11 11:12
jhmaldini
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-5-11
收藏
得分:0 
笨笨姐,还是不行.还是删除不了.
2006-05-11 11:20
jhmaldini
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-5-11
收藏
得分:0 
很奇怪呀,添加功能做起来没问题.到删除出问题了.
2006-05-11 11:26
xufengtang
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2006-5-7
收藏
得分:0 
cmd.Parameters["@id"].Value=this.ListBox1.SelectedValue;
改成cmd.parameters("@id").Value=request("ListBox1");

2006-05-11 11:55
jhmaldini
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-5-11
收藏
得分:0 
楼上的朋友,这个程序要的不是listbox中的内容,而是它的索引.
2006-05-11 12:00
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 
cmd.Parameters.Add(new SqlParameter("@id",SqlDbType.Int,4));
cmd.Parameters["@id"].Value=this.ListBox1.SelectedValue;
你这里不对啊。你设的id是int型的,但是this.ListBox1.SelectedValue是字符串型的。
把它转成int型的。

欢迎光临我的博客: http://smallfools.blog./default.html
2006-05-11 17:12
zhou
Rank: 1
等 级:禁止发言
帖 子:429
专家分:0
注 册:2006-6-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-03-31 10:15
快速回复:问个问题,请知道的朋友解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016208 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved