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( @tablenname) and 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 /* 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( @tablenname) and 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 }
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 }