一下子给所有表增加一个字段
2010-11-20 15:04
204 查看
其实原理很简单,先检查数据库的每个表~是否存在这个字段如果存在的话就把他删除,最后就循环所有表,添加需要添加的字段!
代码
代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; //sysobjects和syscolumns是系统表,可以select来看看 //要增加的是F_Companyid表数据类型是int namespace xiugaibiao { class Program { static void Main(string[] args) { string AddTableName = "F_Companyid"; string AddTableType = "int"; string str = ""; string StrSQL = ""; string Table_Id = ""; string i_1 = ""; int i_2 = 0; string Con_Str = @"server=.;database=DbName;uid=sa;pwd=sa"; SqlConnection Con = new SqlConnection(Con_Str); SqlCommand Com = new SqlCommand(); Com.Connection = Con; Con.Open(); //循环得到所有表名 Com.CommandText = @"select * from sysobjects where xtype = 'u' order by name"; SqlDataReader Dr = Com.ExecuteReader(); while (Dr.Read()) { str += Dr["name"].ToString()+","; Table_Id += Dr["id"].ToString() + ","; } Con.Close(); //查看是否有要增加的字段 Table_Id = Table_Id.Substring(0, Table_Id.Length - 1); string[] Table_Id_Name = Table_Id.Split(','); for(int i=0;i<Table_Id_Name.Length;i++){ Com.Connection = Con; Con.Open(); Com.CommandText = @"select * from syscolumns where id = " + int.Parse(Table_Id_Name[i].ToString()) + " and name = '" + AddTableName + "'"; Dr = Com.ExecuteReader(); while (Dr.Read()) { i_2++; } i_1 += i_2 + ","; i_2 = 0; Con.Close(); } //删除字段 SqlCommand ComTableName = new SqlCommand(); ComTableName.Connection = Con; Con.Open(); str = str.Substring(0,str.Length - 1); string[] Table_Name = str.Split(','); i_1 = i_1.Substring(0, i_1.Length - 1); string[] Table_i_1 = i_1.Split(','); for (int i = 0; i < Table_Name.Length; i++) { if (int.Parse(Table_i_1[i].ToString()) != 0) { StrSQL += @"alter table " + Table_Name[i] + " drop column " + AddTableName + ";"; } } if (StrSQL != "") { ComTableName.CommandText = StrSQL; ComTableName.ExecuteReader(); } Con.Close(); //增加字段 StrSQL = ""; Con.Open(); string[] Table_Name_D = str.Split(','); for (int i = 0; i < Table_Name_D.Length; i++) { StrSQL += @"alter table " + Table_Name_D[i] + " add " + AddTableName + " "+AddTableType+";"; } ComTableName.CommandText = StrSQL; ComTableName.ExecuteReader(); Con.Close(); Console.WriteLine("OK"); Console.ReadLine(); } } }
相关文章推荐
- mysql如何给一个数据库所有表都增加一个字段?
- [MS SQL]Cursor实例讲解1-对某个DB中所有的表加上一个字段
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- 如何获取数据库中某一个表的所有字段
- PHP操作MySQL对表增加一列(一个字段)
- 如何查询一个表中除某几个字段外其他所有的字段
- SqlServer给一个表增加多个字段语法
- 使用反射获取一个类的所有方法和字段
- mysql 怎么给一个表一次增加多个字段, mysql 添加 多个 字段
- sql sever中在表中所有字段外再添加一个字段
- sql中删除冗余数据和一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在对列出所有组合等sql面试题
- (2期) 数据库所有表批量增加字段
- 列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法
- 一个记录集,如何得到该记录集中某一字段所有是重复记录的记录集
- SQL 将相同记录的所有数据合并为一个字段
- 我在一个基础协议中增加了一个字段, 导致同事core dump了!
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- 怎样获取一个表中所有字段的信息
- sqlserver中将查询出来的一个字段的所有值用逗号进行拼接