C# 判断一个数据库是否存在,不存在在创建 代码如何写

yinyi4120 2014-08-09 01:32:26
conn = new SqlConnection(ConnectionString);
if (conn.State != ConnectionState.Open)
conn.Open();
if (File.Exists(@"F:\GFX_JC_DB\GFX_JC.mdb") == false)

{
string sql = "CREATE DATABASE GFX_JC ON PRIMARY"
+ "(name=GFX_JC, filename = 'F:\\GFX_JC_DB\\GFX_JC.mdf', size=3,"
+ "maxsize=5, filegrowth=10%)log on"
+ "(name=GFX_JC_log,filename='F:\\GFX_JC_DB\\GFX_JC_log.ldf',size=3,"
+ "maxsize=20,filegrowth=1)";
cmd = new SqlCommand(sql, conn);
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ae)
{
MessageBox.Show(ae.Message.ToString());
}

上面是代码,第一次运行能创建数据库,而第二次运行时,提示数据库已经存在,让换个名字创建数据库。也就是说程序依然在创建数据库、求大神解答一下!
...全文
1113 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinyi4120 2014-08-11
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
'F:\\GFX_JC_DB\\GFX_JC.mdf' 你后面创建数据库扩展名是mdf 前面判断是否存在用mdb??
我改改!
於黾 2014-08-11
  • 打赏
  • 举报
回复
'F:\\GFX_JC_DB\\GFX_JC.mdf' 你后面创建数据库扩展名是mdf 前面判断是否存在用mdb??
smthgdin_020 2014-08-10
  • 打赏
  • 举报
回复
脚本要有一定顺序,不然会报错。
smthgdin_020 2014-08-10
  • 打赏
  • 举报
回复
如果是sqlserver,就用管理工具,将数据库生成脚本,包括创建数据库,表,存储过程,函数等等。。。。。 然后,写个程序去读取脚本,逐一执行(比如说每个go之间就做一段sql执行)。
xionghao61 2014-08-10
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
[quote=引用 5 楼 yinyi4120 的回复:] [quote=引用 3 楼 smthgdin 的回复:] 可以按照2楼的sql。 在需要触发创建数据库的地方,先执行sql判断数据库是否存在,没存在就创建;存在就提示。
这个代码具体怎么写呢?在我上面贴的代码中,我试着写了下,好像报错啊!求大神指引啊! 菜鸟刚学习C# [/quote] 如果使用他的代码,那么就是
                string sql = "if not exists(select * From master.dbo.sysdatabases where name='GFX_JC ')"
                        +"CREATE DATABASE GFX_JC ON PRIMARY"
                        + "(name=GFX_JC, filename = 'F:\\GFX_JC_DB\\GFX_JC.mdf', size=3,"
                        + "maxsize=5, filegrowth=10%)log on"
                        + "(name=GFX_JC_log,filename='F:\\GFX_JC_DB\\GFX_JC_log.ldf',size=3,"
                        + "maxsize=20,filegrowth=1)";
[/quote]
引用 6 楼 sp1234 的回复:
[quote=引用 5 楼 yinyi4120 的回复:] [quote=引用 3 楼 smthgdin 的回复:] 可以按照2楼的sql。 在需要触发创建数据库的地方,先执行sql判断数据库是否存在,没存在就创建;存在就提示。
这个代码具体怎么写呢?在我上面贴的代码中,我试着写了下,好像报错啊!求大神指引啊! 菜鸟刚学习C# [/quote] 如果使用他的代码,那么就是
                string sql = "if not exists(select * From master.dbo.sysdatabases where name='GFX_JC ')"
                        +"CREATE DATABASE GFX_JC ON PRIMARY"
                        + "(name=GFX_JC, filename = 'F:\\GFX_JC_DB\\GFX_JC.mdf', size=3,"
                        + "maxsize=5, filegrowth=10%)log on"
                        + "(name=GFX_JC_log,filename='F:\\GFX_JC_DB\\GFX_JC_log.ldf',size=3,"
                        + "maxsize=20,filegrowth=1)";
[/quote] sql中可以写判断IF 语句?
yinyi4120 2014-08-10
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
[quote=引用 5 楼 yinyi4120 的回复:] [quote=引用 3 楼 smthgdin 的回复:] 可以按照2楼的sql。 在需要触发创建数据库的地方,先执行sql判断数据库是否存在,没存在就创建;存在就提示。
这个代码具体怎么写呢?在我上面贴的代码中,我试着写了下,好像报错啊!求大神指引啊! 菜鸟刚学习C# [/quote] 如果使用他的代码,那么就是
                string sql = "if not exists(select * From master.dbo.sysdatabases where name='GFX_JC ')"
                        +"CREATE DATABASE GFX_JC ON PRIMARY"
                        + "(name=GFX_JC, filename = 'F:\\GFX_JC_DB\\GFX_JC.mdf', size=3,"
                        + "maxsize=5, filegrowth=10%)log on"
                        + "(name=GFX_JC_log,filename='F:\\GFX_JC_DB\\GFX_JC_log.ldf',size=3,"
                        + "maxsize=20,filegrowth=1)";
[/quote] 多谢了! 但是我后面还有建数据表,该写爱哪里呢? 实现的功能是这样的:程序运行时,检查系统内存在数据库不,不存在时,创建数据库,同时创建多个表。如果系统存在数据库,则关闭数据库连接
  • 打赏
  • 举报
回复
引用 5 楼 yinyi4120 的回复:
[quote=引用 3 楼 smthgdin 的回复:] 可以按照2楼的sql。 在需要触发创建数据库的地方,先执行sql判断数据库是否存在,没存在就创建;存在就提示。
这个代码具体怎么写呢?在我上面贴的代码中,我试着写了下,好像报错啊!求大神指引啊! 菜鸟刚学习C# [/quote] 如果使用他的代码,那么就是
                string sql = "if not exists(select * From master.dbo.sysdatabases where name='GFX_JC ')"
                        +"CREATE DATABASE GFX_JC ON PRIMARY"
                        + "(name=GFX_JC, filename = 'F:\\GFX_JC_DB\\GFX_JC.mdf', size=3,"
                        + "maxsize=5, filegrowth=10%)log on"
                        + "(name=GFX_JC_log,filename='F:\\GFX_JC_DB\\GFX_JC_log.ldf',size=3,"
                        + "maxsize=20,filegrowth=1)";
yinyi4120 2014-08-09
  • 打赏
  • 举报
回复
引用 3 楼 smthgdin 的回复:
可以按照2楼的sql。 在需要触发创建数据库的地方,先执行sql判断数据库是否存在,没存在就创建;存在就提示。
这个代码具体怎么写呢?在我上面贴的代码中,我试着写了下,好像报错啊!求大神指引啊! 菜鸟刚学习C#
iamniguding 2014-08-09
  • 打赏
  • 举报
回复
在系统初始化的时候,都是这么写脚本的, 从系统表中取是否存在对应的表对象,索引之类,没有就创建
smthgdin_020 2014-08-09
  • 打赏
  • 举报
回复
可以按照2楼的sql。 在需要触发创建数据库的地方,先执行sql判断数据库是否存在,没存在就创建;存在就提示。
exception92 2014-08-09
  • 打赏
  • 举报
回复
逻辑不对。 不应该在C# 中判断,而应该在C#中执行proc 这个proc中包含 判断数据库是否存在判断,并且根据判断条件 执行是否创建数据库或者提示 数据库已存在。将提示信息返回。
  • 打赏
  • 举报
回复
select * From master.dbo.sysdatabases where name='数据库名'
这句SQL语句会查询指定数据库的详细信息。这样就能查到数据库。

110,538

社区成员

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

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

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