• 更新数据库中所有表【插入新列】


    1、通过SQL语句,循环数据库所有的表,分别插入新列“F_EditTime”

     1 use DDDD
     2 /*Get Table Cursor*/
     3 declare @tablenname  varchar(50);
     4 declare @isExist int;
     5 
     6 /*游标遍历数据库所有的用户表表名*/
     7 Declare t_Table_cursor Cursor for
     8  SELECT name FROM sys.sysobjects where Type='u';
     9 
    10 /*Open Cursor*/
    11 open t_Table_cursor
    12 /*Fetch */
    13 fetch next from t_Table_cursor
    14 into @tablenname;
    15 
    16 //循环添加新列
    17 while @@Fetch_Status=0
    18  begin
    19   if(@tablenname <> '')
    20    begin
    21      set @isExist=0;
    22      select @isExist=count(*from syscolumns where id=object_id(@tablennameand name='F_EditTime'
    23      print @isExist
    24      if(cast(@isExist as int= 0)
    25       begin
    26        print 'in '+@tablenname
    27        exec('alter table '+@tablenname+' add F_EditTime datetime default getdate() ');
    28        exec('update '+@tablenname+' set  F_EditTime=getdate()');
    29       end
    30    end
    31   Fetch next from t_Table_cursor 
    32      into @tablenname;
    33  end
    34 /*close and Release*/
    35 close t_Table_cursor;
    36 DEALLOCATE t_Table_cursor;
    37 
    38 微软权威的存储过程
    39   DECLARE   @TableName   varchar(255)  
    40   DECLARE   @ExeSQL   varchar(4000)    
    41   DECLARE   Table_Cursor   CURSOR   FOR   SELECT   [name]   FROM   sysobjects   WHERE   xtype='U'  
    42   OPEN   Table_Cursor  
    43   FETCH   NEXT   FROM     Table_Cursor   INTO   @TableName  
    44   WHILE(@@FETCH_STATUS=0)  
    45   BEGIN  
    46     PRINT   @TableName  
    47     /*SELECT   @ExeSQL='DBCC   CHECKTABLE ('''+@TableName+''')'   */
    48     exec('alter table '+@TableName+' add F_EditTime datetime default getdate() ');
    49     EXEC(@EXESQL)  
    50   FETCH   NEXT   FROM     Table_Cursor   INTO   @TableName  
    51   END  
    52   CLOSE   Table_Cursor  
    53   DEALLOCATE   Table_Cursor  
    54   GO


    2、当然这个也可以通过Application实现
       具体如下:

     1     protected void Button2_Click(object sender, EventArgs e)
     2     {
     3         ArrayList namesList=getAllNames();
     4         for (int i = 0; i < namesList.Count; i++)
     5         {
     6             if (!isExit(namesList[i].ToString()))
     7             {
     8                 updateTable(namesList[i].ToString());     
     9             }   
    10         }
    11     }
    12     //执行插入列操作
    13     public bool updateTable(string tableName)
    14     {
    15         bool success = false ;
    16         SqlConnection con = DB.CreateServerCon();
    17         string strSql = " alter table "+tableName+"  add F_EditTime datetime default getdate()";      
    18         string updateSql="update " + tableName + " set F_EditTime = getdate()";
    19         SqlCommand cmd = new SqlCommand(strSql, con);
    20         SqlCommand updateCmd = new SqlCommand(updateSql, con);
    21         try
    22         {
    23             con.Open();
    24            Convert.ToInt32(cmd.ExecuteNonQuery()); 
    25            Convert.ToInt32(updateCmd.ExecuteNonQuery());      
    26            success = true;     
    27         }
    28         catch
    29         { }
    30         finally
    31         {
    32             con.Close();
    33         }
    34         return success;
    35     }
    36     /// <summary>
    37     /// 判断在表中字段名是否存在
    38     /// </summary>
    39     /// <param name="tableName">表名</param>
    40     /// <returns></returns>
    41     public bool isExit(string tableName)
    42     {
    43         bool success = false ;
    44         SqlConnection con = DB.CreateServerCon();       
    45         string strSql = "select count(*) from syscolumns where id=object_id('"+tableName+"') and name='F_EditTime'";
    46         SqlCommand cmd = new SqlCommand(strSql, con);
    47         try
    48         {
    49             con.Open();
    50             int count = Convert.ToInt32(cmd.ExecuteScalar());
    51             if (count > 0)
    52             {
    53                 success = true;
    54             }
    55         }
    56         catch
    57         { }
    58         finally
    59         {
    60             con.Close();
    61         }
    62         return success;
    63     }
    64     /// <summary>
    65     /// 得到数据库中所有的用户表
    66     /// </summary>
    67     /// <returns></returns>
    68     public ArrayList getAllNames()
    69     {
    70         ArrayList namesList=new ArrayList();
    71         SqlConnection con = DB.CreateServerCon();
    72         string strSql = "SELECT name FROM sys.sysobjects WHERE type='U' order by name";       
    73         SqlCommand cmd = new SqlCommand(strSql, con);
    74         try
    75         {
    76             con.Open();
    77             SqlDataReader sdr = cmd.ExecuteReader();
    78             while(sdr.Read())
    79             {
    80                 namesList.Add(sdr[0].ToString());
    81             }
    82         }
    83         catch
    84         { }
    85         finally
    86         {
    87             con.Close();
    88         }
    89         return namesList;
    90     }
  • 相关阅读:
    iscroll4实现轮播图效果
    用css样式围剿等高列问题(转载)
    一些小bug
    前端代码规范
    !DOCTYPE html文档类型声明简写 HTML5 DOCTYPE缩写
    JS判断鼠标向上滚动还是向下滚动
    css Cursor:url()自定义鼠标指针样式为图片
    线段树-矩形面积求并
    值域线段树 bzoj 4627
    简单数位DP
  • 原文地址:https://www.cnblogs.com/yank/p/936531.html
Copyright © 2020-2023  润新知