static void Main(string[] args)
{
/* args expected:
* <UtilityName>
* -f <path to database script(s) folder>
* -s <server instance>
* -u <username>
* -p <password>
* -d <database name>
* -t trusted connection
*
* [for scripting data]
* --table <table name>
* --limit <limit results>
* --alltables
* --fixtures [also for building database]
* --where <clause>
*/
// basic options
string svr = "";
string usr = "";
string pwd = "";
string dbs = "";
string pth = "";
bool trustedConnection = false;
// other options
string tbl = "";
int limit_results = 0;
bool all_tables = false;
bool with_fixtures = false;
string where_clause = "";
// 7+ parameters are required
if (args.Length < 8)
{
PrintInstructions();
return;
}
// first arg should be the utility required
string util = args[0];
if (
util.ToLower() != CMD_SCRIPT_OBJECTS &&
util.ToLower() != CMD_CREATE_DATABASE &&
util.ToLower() != CMD_SCRIPT_DATA
)
{
PrintInstructions();
return;
}
for (int i = 1; i < args.Length; i++)
{
switch (args[i])
{
case "-s":
svr = args[i + 1];
break;
case "-f":
pth = args[i + 1];
break;
case "-d":
dbs = args[i + 1];
break;
case "-u":
usr = args[i + 1];
break;
case "-p":
pwd = args[i + 1];
break;
case "-t":
if (pwd != "" || usr != "") Console.WriteLine(args[i] + "argument only applies if no usrname or password is set");
trustedConnection = true;
break;
case "--fixtures":
if (util.ToLower() == CMD_SCRIPT_OBJECTS) Console.WriteLine(args[i] + " argument does not apply to the ScriptDbObjects utility");
with_fixtures = true;
break;
case "--where":
if (util.ToLower() != CMD_SCRIPT_OBJECTS || with_fixtures == false) Console.WriteLine(args[i] + " argument only applies to ScriptData utility when creating fixture scripts");
where_clause = "WHERE "+args[i + 1];
break;
case "--table":
if (util.ToLower() != CMD_SCRIPT_DATA) Console.WriteLine(args[i] + " argument only applies to ScriptData utility");
tbl = args[i + 1];
break;
case "--limit":
if (util.ToLower() != CMD_SCRIPT_DATA) Console.WriteLine(args[i] + " argument only applies to ScriptData utility");
try
{
limit_results = Convert.ToInt32(args[i + 1]);
}
catch
{
Console.WriteLine("Invalid value supplied for " + args[i] + " argument");
}
break;
case "--alltables":
if (util.ToLower() != CMD_SCRIPT_DATA) Console.WriteLine(args[i] + " argument only applies to ScriptData utility");
all_tables = true;
break;
}
}
//
// all of these are required all the time
if (pwd != "" && trustedConnection || usr != "" && trustedConnection || svr == "" || pth == "")
{
PrintInstructions();
return;
}
// if creating a database - it should only be a local instance??
/*
if (util.ToLower() == CMD_CREATE_DATABASE && !svr.Contains(@"\SQLEXPRESS"))
{
Console.WriteLine("The " + util + " function should only be used on workstation installations of SQLEXPRESS.");
return;
}
*/
// if creating a database or insert script, need the db name
/*
if ((util.ToLower() == CMD_CREATE_DATABASE || util.ToLower() == CMD_SCRIPT_DATA) && dbs == "")
{
Console.WriteLine("The " + util + " function requires the database name to be specified.");
PrintInstructions();
return;
}
*/
// if scripting table data, tablename must be provided
if (util.ToLower() == CMD_SCRIPT_DATA && tbl == "" && all_tables == false)
{
Console.WriteLine("The " + util + " function requires the table name to be specified unless --alltables is specified.");
PrintInstructions();
return;
}
// establish and test db connection
Connection connection = new Connection(svr, usr, pwd, trustedConnection);
if (connection.testConnection() != true)
{
Console.WriteLine("Database connection could not be established.");
Console.WriteLine("Enter v to view the connection error message, q to quit.");
string nxt = Console.ReadLine();
if (nxt.ToLower() == "v")
{
Console.WriteLine("\n" + connection.connectionError + "\n");
Console.ReadLine();
}
return;
}
// Create Database
/*
if (util.ToLower() == CMD_CREATE_DATABASE)
{
CreateDatabase db = new CreateDatabase(connection, pth, dbs, with_fixtures);
}
*/
// Script Objects
if (util.ToLower() == CMD_SCRIPT_OBJECTS)
{
ScriptDbObjects dbo = new ScriptDbObjects(connection, pth, dbs);
}
// Script Data
if (util.ToLower() == CMD_SCRIPT_DATA)
{
string[] tables;
if (all_tables == true)
tables = ScriptData.getTables(connection, dbs);
else
tables = new string[]{tbl};
foreach (string t in tables)
{
ScriptData sd = new ScriptData(connection, pth, dbs, t, limit_results, with_fixtures, where_clause);
}
}
}