如何用C#查询sql Server 2005中是否存在“表名”表,如果不存在则使用此“表名”创建表

acc972 2012-04-17 04:15:45


SqlConnection myCon2 = new SqlConnection();
myCon2.ConnectionString = "Persist Security Info=False;User id=sa;pwd=111111;database=message;server=(local)";
myCon2.Open();

Console.WriteLine("请输入员工编号:");
string user_id = Console.ReadLine();

SqlDataAdapter adp = new SqlDataAdapter();
DataTable dt = myCon2.GetSchema();

try
{
SqlCommand cmd = new SqlCommand("select * from user_id" , myCon2);
cmd.ExecuteNonQuery();
}
catch (SqlException ex) {
switch (ex.Number) {
case 1146:
Console.WriteLine("无此表,创建表");
string mySelectQuery="CREATE TABLE user_id(usermessage VARCHAR(MAX))";
SqlCommand cmd = new SqlCommand(mySelectQuery, myCon2);
cmd.ExecuteNonQuery();
Console.Read();
break;
default:
break;
}
}



我想通过输入的员工编号user_id来判定数据库中是否存在表名为user_id的表,如果没有则以输入的编号为表名创建表。可是上面的代码不能实现这个功能,请各位大侠指点迷津。谢谢
...全文
314 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
acc972 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

或者做成存储过程:

if not exists(select * from sysobjects where id=object_Id('dbo.user_id') )
CREATE TABLE user_id(usermessage VARCHAR(MAX))
[/Quote]
很高兴!终于可以成功执行了。但是还有个问题就是,如何实现动态创建以用户输入user_id的内容(如001,002……)为表名创建表呢?用上述的方法创建的表名只是user_id本身。希望创建以001,002……这样子的表。
stonespace 2012-04-17
  • 打赏
  • 举报
回复
或者做成存储过程:

if not exists(select * from sysobjects where id=object_Id('dbo.user_id') )
CREATE TABLE user_id(usermessage VARCHAR(MAX))
antiking 2012-04-17
  • 打赏
  • 举报
回复
select count(*) from sysobjects where id = object_id("数据库名.Owner.表名")


stonespace 2012-04-17
  • 打赏
  • 举报
回复
判断表是否存在可以用这样的sql语句:

select count(*) from sysobjects where id = object_id('dbo.user_id')
acc972 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

断点调试啊,代码报错了吗,没报错就一步步执行看逻辑哪里错了。
[/Quote]
没有报错,ex.Number如果是1146的话说明无此表,但并没有执行console.writeline("无此表,创建表")这条语句。可是数据库中确实是没有以“user_id”为名的表的啊。还有就是,sqlCommand("select * from user_id",mycon2)中的user_id在引号内经过提交到数据库后的user_id是否为输入的值?还是只是user_id?需要写成sqlCommand("select * from"+ user_id,mycon2)这个样子吗?
test2050 2012-04-17
  • 打赏
  • 举报
回复
断点调试啊,代码报错了吗,没报错就一步步执行看逻辑哪里错了。

111,126

社区成员

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

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

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