关于查询数据库是否存在表

西门喷血 2010-11-04 11:54:33

/// <summary>
/// 查询数据库是否存在表
/// </summary>
/// <param name="TableName">表名</param>
public bool ExostsTable(string TableName)
{
SqlCommand com = new SqlCommand("SELECT * FROM sysobjects where name='" + TableName + "'", new SqlConnection(DBHelps.ConnectionString));
com.CommandType = CommandType.Text;
com.Connection.Open();
int num=com.ExecuteNonQuery;

com.Connection.Close();
if(num>0)
return true;
else
return false;
}
为什么查询结果返回总是-1 应该怎么查呢?
...全文
260 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adechen 2010-11-04
  • 打赏
  • 举报
回复
使用ExcuteReader试下
西门喷血 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 huangwenquan123 的回复:]
引用 6 楼 intcry 的回复:
引用 2 楼 huangwenquan123 的回复:
C# code

public bool ExostsTable(string TableName)
{
int count=0;
SqlCommand com = new SqlCommand("SELECT count(1) FROM sysobjects where name='" +……
[/Quote]
我在SQL2005中查询 返回都是0 所以SQL语句可能有问题!
huangwenquan123 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 intcry 的回复:]
引用 2 楼 huangwenquan123 的回复:
C# code

public bool ExostsTable(string TableName)
{
int count=0;
SqlCommand com = new SqlCommand("SELECT count(1) FROM sysobjects where name='" + TableName + "'", ne……
[/Quote]sql语句怎么写的?
不要写成select *
写成 select count(1)
hch126163 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jlds123 的回复:]

返回首行首列 然后判断
[/Quote]

ExecuteScalar
jlds123 2010-11-04
  • 打赏
  • 举报
回复
返回首行首列 然后判断
西门喷血 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huangwenquan123 的回复:]
C# code

public bool ExostsTable(string TableName)
{
int count=0;
SqlCommand com = new SqlCommand("SELECT count(1) FROM sysobjects where name='" + TableName + "'", new SqlConnection(DBHel……
[/Quote]
count = dr.GetInt32(0);指定的转换无效。
ww2010999 2010-11-04
  • 打赏
  • 举报
回复
3L说的对 用sqldataadter






http://www.e2389.com
mengmeng1219 2010-11-04
  • 打赏
  • 举报
回复
-----------判断是否有该表
IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'表名')
AND OBJECTPROPERTY(ID, 'IsTable') = 1)
select 1
else
select 0
huadream394430057 2010-11-04
  • 打赏
  • 举报
回复
你有用int num=com.ExecuteNonQuery;
这个语句,对于查询来说总是-1;对update,insert delete 是返回所影响的行数,你用sqldataadter
huangwenquan123 2010-11-04
  • 打赏
  • 举报
回复

public bool ExostsTable(string TableName)
{
int count=0;
SqlCommand com = new SqlCommand("SELECT count(1) FROM sysobjects where name='" + TableName + "'", new SqlConnection(DBHelps.ConnectionString));
com.CommandType = CommandType.Text;
com.Connection.Open();
using(SqlDatareader dr = com.ExecuteReader())
{
while(dr.read())
{
count=dr.getint32(0);
}
}
if(count>0)
return true;
else
return false;
}


huangwenquan123 2010-11-04
  • 打赏
  • 举报
回复
你用ExecuteNonquery了!
对sql语句中的select,ExecuteNonquery返回-1
你可以用ExecuteReader
lilianjie0426 2010-11-04
  • 打赏
  • 举报
回复
呵呵,刚才引用错了~~
[Quote=引用 4 楼 mengmeng1219 的回复:]

-----------判断是否有该表
IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'表名')
AND OBJECTPROPERTY(ID, 'IsTable') = 1)
select 1
else
select 0
[/Quote]

+1 标准的查询数据库中有无表的方法。
lilianjie0426 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huadream394430057 的回复:]

你有用int num=com.ExecuteNonQuery;
这个语句,对于查询来说总是-1;对update,insert delete 是返回所影响的行数,你用sqldataadter
[/Quote]

+1 标准的判断数据库中有无表的方法。
紫气东来_999 2010-11-04
  • 打赏
  • 举报
回复
sql 为啥不写:

select count(*) FROM sysobjects where name='" + TableName + "'",

根据返回 count(*)得到也行阿
huangwenquan123 2010-11-04
  • 打赏
  • 举报
回复

我可以查得出来!

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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