GetTableSchema

 private static void GetTableSchema( string  connstring,string commandText )
        {

            string  TatableName = "test_table_" + DateTime.Now.ToString("mmss");
            string  outfilepath=@"C:\OUTFILE.TXT";
            using (SAConnection connection = new SAConnection(connstring))
            {
                connection.Open();
                SACommand command = connection.CreateCommand();
                command.Connection = connection;            
                DataTable alldatatype= null ;
                SADataReader reader = null;
                StringBuilder builder = new StringBuilder();


                try
                {
                    command.CommandText = commandText;
                    reader = command.ExecuteReader();

                    builder.Append(@"create table ");
                    builder.Append(TatableName);
                    builder.Append(@"(");

                    //foreach (DataRow row in alldatatype.Rows)
                    while (reader.Read())
                    {                        
                        builder.Append(reader["domain_name"].ToString().Replace(@" ", @"_"));
                        builder.Append(@"_");
                        builder.Append(reader["domain_id"].ToString());
                        builder.Append(@"  ");
                        builder.Append(reader["domain_name"].ToString());
                        builder.Append(@",");
                    }
                    builder.Remove(builder.Length - 1, 1);
                    builder.Append(@")");

                }
                catch (Exception ex)
                {
                    Console.WriteLine("  Message: {0}", ex.Message);
                    return;
                }
                finally
                {
                    connection.Close();
                    reader.Close();
                }                        
   
                try
                {
                    connection.Open();
                    command.CommandText = builder.ToString();
                    command.ExecuteNonQuery();                    
                }
                catch (Exception ex)
                {
                    Console.WriteLine("  Message: {0}", ex.Message);
                    connection.Close();
                    return;
                }

                
                try
                {
                    command.CommandText = @"select * from " + TatableName;
                    reader = command.ExecuteReader();
                    alldatatype = reader.GetSchemaTable();
                    reader.Close();
       
                    FileStream stream = new  FileStream(outfilepath,FileMode.OpenOrCreate);
                    StreamWriter write = new StreamWriter(stream);     
                    //foreach(DataRow row  in alldatatype.Rows)
                    //{          
                    //    write.Write(@"数据库字段类型: ");
                    //    write.Write(row["ColumnName"].ToString().Substring(0, row["ColumnName"].ToString().LastIndexOf(@"_")).Replace(@"_", @" "));
                    //    write.Write(@"  -> ");                        
                    //    write.Write(@"DataRead获取的ProviderType编号: ");
                    //    write.Write(row["ProviderType"].ToString());
                    //    write.Write(@"  -> ");
                    //    write.Write(@"DataRead获取的字段类型 : ");
                    //    write.Write(row["DataType"].ToString());                     
                    //    write.WriteLine();
                    //}         
                    
                    write.Write(@"ProviderType ");
                    write.Write(@".net           ");
                    write.Write(@"数据库 ");
                    write.WriteLine();
                    write.Write(@"编号        ");
                    write.Write(@"字段类型        ");
                    write.Write(@"字段类型");
                    write.WriteLine();
                    write.WriteLine(@"-------------------------------------------------------------------------------");
                    foreach (DataRow row in alldatatype.Rows)
                    {                                                                      
                        write.Write(row["ProviderType"].ToString());
                        write.Write(@"       ");
                        write.Write(row["DataType"].ToString());
                        write.Write(@"       ");
                        write.Write(row["ColumnName"].ToString().Substring(0, row["ColumnName"].ToString().LastIndexOf(@"_")).Replace(@"_", @" "));                                               
                        write.WriteLine();
                    }         
                     
                    write.Flush();
                    write.Close();
                    stream.Flush();
                    stream.Close();
                    Console.WriteLine("输出信息位置:"+ outfilepath);
                    Console.WriteLine("按任意键退出");
                    Console.ReadKey();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("  Message: {0}", ex.Message);
                    connection.Close();
                    return;
                }
                finally
                {
                    try
                    {
                        command.CommandText = @"delete  from " + TatableName;
                        command.ExecuteNonQuery();
                    }
                    catch
                    {                            
                    }
                    if (connection.State != ConnectionState.Closed)
                        connection.Close();
                }
            }
 
         
        }
posted @ 2012-03-24 21:28  Ry5  阅读(1114)  评论(0编辑  收藏  举报