The program is a console progam.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlServerCe;namespace ScriptCEDatabase{class Program{static void Main(string[] args){if (args.GetUpperBound(0) <>{Console.WriteLine("Usage:ScriptCEDatabase {Dbfile} {sqlfilepath} [password]");return;}System.Data.SqlServerCe.SqlCeConnection conn = new SqlCeConnection();conn.ConnectionString = "Data Source=" + args[0] + "; Persist Security Info=True";if (args.GetUpperBound(0) == 2)conn.ConnectionString = conn.ConnectionString + ";password=" + args[2];conn.Open();SqlCeCommand TableList = new SqlCeCommand("select * from information_schema.tables", conn);SqlCeDataReader TableReader = TableList.ExecuteReader();string filename = args[1];if (filename.EndsWith("\\")) filename += "\\";filename += System.Guid.NewGuid().ToString() + ".sql";System.IO.StreamWriter sw = new System.IO.StreamWriter(filename, false);while (TableReader.Read()){Console.WriteLine("CREATE TABLE [" + TableReader["TABLE_NAME"].ToString() + "] (");sw.WriteLine("CREATE TABLE [" + TableReader["TABLE_NAME"].ToString() + "] (");SqlCeCommand FieldList = new SqlCeCommand("select * from information_schema.columns where TABLE_NAME = '" + TableReader["TABLE_NAME"].ToString() + "'"+ " order by ordinal_position",conn );SqlCeDataReader ColumnReader = FieldList.ExecuteReader();bool isFirst = true;while (ColumnReader.Read()){if (!isFirst)sw.Write(",");elseisFirst = false;Console.Write( "[" + ColumnReader["Column_name"] + "] " + ColumnReader["DATA_TYPE"]);if (ColumnReader["DATA_TYPE"].ToString() == "nchar" || ColumnReader["DATA_TYPE"].ToString() == "nvarchar")Console.Write("(" + ColumnReader["CHARACTER_MAXIMUM_LENGTH"].ToString() + ")");if (ColumnReader["IS_NULLABLE"].ToString() == "YES")Console.WriteLine(" NULL,");elseConsole.WriteLine(" NOT NULL,");sw.Write(ColumnReader["Column_name"] + " " + ColumnReader["DATA_TYPE"]);if (ColumnReader["DATA_TYPE"].ToString() == "nchar" || ColumnReader["DATA_TYPE"].ToString() == "nvarchar")sw.Write("(" + ColumnReader["CHARACTER_MAXIMUM_LENGTH"].ToString() + ")");if (ColumnReader["IS_NULLABLE"].ToString() == "YES")sw.WriteLine(" NULL");elsesw.WriteLine(" NOT NULL");}ColumnReader.Close();Console.WriteLine(");");sw.WriteLine(");");sw.WriteLine();}TableReader.Close();// IndexesSqlCeCommand cmdIndex = new SqlCeCommand("SELECT * FROM INFORMATION_SCHEMA.INDEXES", conn);SqlCeDataReader rdrIndex = cmdIndex.ExecuteReader();while(rdrIndex.Read()){if ( rdrIndex["PRIMARY_KEY"].ToString() == "True"){Console.WriteLine ("ALTER TABLE " + rdrIndex["TABLE_NAME"] + " ADD CONSTRAINT " + rdrIndex["INDEX_NAME"] + " PRIMARY KEY (" + rdrIndex["COLUMN_NAME"] + ");");sw.WriteLine();sw.WriteLine ("ALTER TABLE [" + rdrIndex["TABLE_NAME"] + "] ADD CONSTRAINT " + rdrIndex["INDEX_NAME"] + " PRIMARY KEY ( [" + rdrIndex["COLUMN_NAME"] + "] );");}}sw.Close();}}}
No comments:
Post a Comment