C#解决 动态创建库、动态创建表

当然,系统有很多。但是个人只是参与子系统的开发。在之前一直在考试系统里面打杂。这个项目分配下来了之后,我也就开始由打杂换了一种方式去打杂.

在做项目的过程中,任务的分配是非常明确的。什么时间干什么事情,每天的任务等等。加上模块的划分,各系统之间的耦合要低等原则。这就要求底层的东西要封装的特别好,重用性很高。

因为之前一直都是在做题型和题库这几个模块。相对于其他的模块来说,题型这里更加抽象。因为每个题型都有不同的特点。需要保存的方式也不同。至于题库,那更是得需要题型提供支持啦。

总不能每个题型写一遍。那还不得累死。

在做需求的时候,就已经知道,题型的这一部分是活的。这就需要一种新的方法——动态创建表。

在没有接触这些东西之前,画题型的原型……不会画。画题型的类图……把每个题型都画出来?累死不说,还不能扩展。

这样做出来的系统,要想添加题型,改代码那是肯定的了。

这东西做完,对理解题型需求是非常有用的。

1、提供数据库名,然后去创建。

#region 判断数据库是否存在/// <summary>/// 判断数据库是否存在/// </summary>/// <param name="db">数据库的名称</param>/// <param name="connKey">数据库的连接Key</param>/// <returns>true:表示数据库已经存在;false,表示数据库不存在</returns>public Boolean IsDBExist(string db,string connKey){SQLHelper helper = SQLHelper.GetInstance();string connToMaster = ConfigurationManager.ConnectionStrings[connKey].ToString();string createDbStr = " select * from master.dbo.sysdatabases where name " + "= '" + db + "'";DataTable dt= helper.ExecuteQuery(createDbStr, CommandType.Text);if (dt.Rows.Count==0){return false;}else{return true;}}#endregion#region 判断数据库中,指定表是否存在/// <summary>/// 判断数据库表是否存在/// </summary>/// <param name="db">数据库</param>/// <param name="tb">数据表名</param>/// <param name="connKey">连接数据库的key</param>/// <returns>true:表示数据表已经存在;false,表示数据表不存在</returns>public Boolean IsTableExist(string db,string tb, string connKey){SQLHelper helper = SQLHelper.GetInstance();string connToMaster = ConfigurationManager.ConnectionStrings[connKey].ToString();string createDbStr = "use " + db + " select 1 from sysobjects where id = object_id('" + tb + "') and type = 'U'";//在指定的数据库中 查找 该表是否存在DataTable dt = helper.ExecuteQuery(createDbStr, CommandType.Text);if (dt.Rows.Count == 0){return false;}else{return true;}}#endregion#region 创建数据库/// <summary>/// 创建数据库/// </summary>/// <param name="db">数据库名称</param>/// <param name="connKey">连接数据库的key</param>public void CreateDataBase(string db, string connKey){SQLHelper helper = SQLHelper.GetInstance();//符号变量,判断数据库是否存在Boolean flag = IsDBExist(db, connKey);//如果数据库存在,则抛出if (flag == true){throw new Exception("数据库已经存在!");}else{//数据库不存在,创建数据库string connToMaster = ConfigurationManager.ConnectionStrings[connKey].ToString();string createDbStr = "Create database " + db;helper.ExecuteNonQuery(createDbStr, CommandType.Text);}}#endregion#region 创建数据库表/// <summary>/// 在指定的数据库中,,创建数据表/// </summary>/// <param name="db">指定的数据库</param>/// <param name="dt">要创建的数据表</param>/// <param name="dic">数据表中的字段及其数据类型</param>/// <param name="connKey">数据库的连接Key</param>public void CreateDataTable(string db, string dt, Dictionary<string, string> dic, string connKey){SQLHelper helper = SQLHelper.GetInstance();string connToMaster = ConfigurationManager.ConnectionStrings[connKey].ToString();//判断数据库是否存在if (IsDBExist(db, connKey) == false){throw new Exception("数据库不存在!");}//如果数据库表存在,则抛出错误if (IsTableExist(db, dt, connKey) == true){throw new Exception("数据库表已经存在!");}else//数据表不存在,创建数据表{//拼接字符串,(该串为创建内容)string content = "serial int identity(1,1) primary key ";//取出dic中的内容,进行拼接List<string> test = new List<string>(dic.Keys);for (int i = 0; i < dic.Count(); i++){content = content + " , " + test[i] + " " + dic[test[i]];}//其后判断数据表是否存在,然后创建数据表string createTableStr = "use " + db + " create table " + dt + " (" + content + ")";helper.ExecuteNonQuery(createTableStr, CommandType.Text);}}#endregion

以上就是与动态创建库,创建表相关的函数。

人生如果错了方向,停止就是进步”。

C#解决 动态创建库、动态创建表

相关文章:

  • 【算法】直接插入排序C语言实现
  • 嵌入式 FAAC1.28 在海思HI3518C/HI3518A平台linux中的编译优化
  • 你感兴趣的文章:

    标签云:

    亚洲高清电影在线, 免费高清电影, 八戒影院夜间, 八戒电影最新大片, 出轨在线电影, 午夜电影院, 在线影院a1166, 在线电影院, 在线观看美剧下载, 日本爱情电影, 日韩高清电影在线, 电影天堂网, 直播盒子app, 聚合直播, 高清美剧, 高清美剧在线观看 EhViewer-E站, E站, E站绿色版, qqmulu.com, qq目录网, qq网站目录,