c#中的数据库操作

我在工程 2012-05-07 11:36:26
请问谁知道怎么在c#中进行数据库中的数据删除吗,我试了几段代码都不成功,既不报错也没反应。使用的数据库时sql server2005
我的代码是这样的:
private void ok_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conn);
con.Open();
String str1;
if (dl != "")
{
str1 = "delete from 对象表 where 对象名称='" + dl + "')";
SqlCommand MyCommand = new SqlCommand(str1, con);
try
{
con.Open();
MyCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
}
else
MessageBox.Show("不能输入空值!");
}
...全文
146 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
我在工程 2012-05-08
  • 打赏
  • 举报
回复
它说我的"对象表"无效,可是我就有那个表的呀,这是怎么了?
[Quote=引用 14 楼 的回复:]
你把try catch去了就能报错了
把你的sql语句放Sqlserver查询分析器执行试试
[/Quote]
我在工程 2012-05-08
  • 打赏
  • 举报
回复
我改过了。
[Quote=引用 15 楼 的回复:]
数据库open了2次?

try
{
con.Open();//删除
MyCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
}
[/Quote]
事理 2012-05-08
  • 打赏
  • 举报
回复
数据库open了2次?

try
{
con.Open();//删除
MyCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
}
chen870201 2012-05-08
  • 打赏
  • 举报
回复
肯定是链接方面的问题
zincy 2012-05-08
  • 打赏
  • 举报
回复
你把try catch去了就能报错了
把你的sql语句放Sqlserver查询分析器执行试试
我在工程 2012-05-08
  • 打赏
  • 举报
回复
sql语句没有错,设置断点调试看了。内容是对的。
[Quote=引用 3 楼 的回复:]
你在str1 = "delete from 对象表 where 对象名称='" + dl + "')";这句设个断点,然后取出str1的值,看看有没有错,然后放到server sql 的查询窗口中执行,看看能否删除行,
[/Quote]
我在工程 2012-05-08
  • 打赏
  • 举报
回复
这个没有出现:MessageBox.Show("没有删除任何一行"),但是我查看数据库也没有删除。
[Quote=引用 4 楼 的回复:]
MyCommand.ExecuteNonQuery();这句可以判断一下返回值,返回值等于删除的行的数目,

int nRowCount=MyCommand.ExecuteNonQuery();

if (nRowCount<=0)
{
MessageBox.Show("没有删除任何一行");
}
[/Quote]
test2050 2012-05-08
  • 打赏
  • 举报
回复
conn是什么内容,两处con.Open()。先学会下断点一行行代码执行。
z15108019324 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
str1 = "delete from 对象表 where 对象名称='" + dl + "')";
首先红色部分都一个右括号,删掉
str1 = "delete from 对象表 where 对象名称='" + dl + "'";

还有前面已经 con.Open();后面又 con.Open();建议 con.Open();写在后面


去掉try catch调试,看看具体错……
[/Quote]
赞成
EnForGrass 2012-05-08
  • 打赏
  • 举报
回复
str1 = "delete from 对象表 where 对象名称='" + dl + "')";
首先红色部分都一个右括号,删掉
str1 = "delete from 对象表 where 对象名称='" + dl + "'";

还有前面已经 con.Open();后面又 con.Open();建议 con.Open();写在后面


去掉try catch调试,看看具体错误
w767687781 2012-05-08
  • 打赏
  • 举报
回复
我以前见过 后来把 try catch 去了之后好了…………
billlyh 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
MyCommand.ExecuteNonQuery();这句可以判断一下返回值,返回值等于删除的行的数目,

int nRowCount=MyCommand.ExecuteNonQuery();

if (nRowCount<=0)
{
MessageBox.Show("没有删除任何一行");
}
[/Quote]
关注学习
billlyh 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
MyCommand.ExecuteNonQuery();这句可以判断一下返回值,返回值等于删除的行的数目,

int nRowCount=MyCommand.ExecuteNonQuery();

if (nRowCount<=0)
{
MessageBox.Show("没有删除任何一行");
}
[/Quote]
关注学习
wangsong145 2012-05-08
  • 打赏
  • 举报
回复
怎么连接打开了两次:con.Open();
如果不报错的话估计是你的Sql语句已经正确执行了,有可能是你的Sql语句的对象名称写的不正确,楼主可以试试监听下sql语句
我在工程 2012-05-08
  • 打赏
  • 举报
回复
问题解决了,本来还有错,可是我同学来看了一眼,执行一下就好了。这种程序问题真是强大。
stonespace 2012-05-08
  • 打赏
  • 举报
回复
MyCommand.ExecuteNonQuery();这句可以判断一下返回值,返回值等于删除的行的数目,

int nRowCount=MyCommand.ExecuteNonQuery();

if (nRowCount<=0)
{
MessageBox.Show("没有删除任何一行");
}
stonespace 2012-05-08
  • 打赏
  • 举报
回复
你在str1 = "delete from 对象表 where 对象名称='" + dl + "')";这句设个断点,然后取出str1的值,看看有没有错,然后放到server sql 的查询窗口中执行,看看能否删除行,


  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

它说我的"对象表"无效,可是我就有那个表的呀,这是怎么了?
[/Quote]

如果是这个问题,首先看看你的连接串是否正确,比如数据库有没有写错
如果上面没有问题,再看看你表的owner是谁,你连接串中的用户有没有操作这个表的权限。或者你在sql语句中加上owner
"delete from owner.table where 对象名称='" + dl + "'"

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧