我是在 C# 中使用 sqlcmd 运行 SQL 脚本的新手。我在 Internet 上看到了一些代码,但我不明白它是如何工作的。
string path = string.Empty;
OpenFileDialog opd = new OpenFileDialog();
opd.Filter = "sql files|*.sql";
if (opd.ShowDialog() == DialogResult.OK)
{
path = opd.FileName;//Here i am taking Database sqlScript
}
string tmpFile = Path.GetTempFileName();
SqlConnectionStringBuilder connection=new SqlConnectionStringBuilder(@"Data Source=LPTP2\LPTP2;Initial Catalog=Database;Integrated Security=True");
string argument = string.Format(@" -S {0} -d {1} -i ""{2}"" -o ""{3}""",
@".\SQLEXPRESS", "Database", path, tmpFile);
// append user/password if not use integrated security
if (!connection.IntegratedSecurity)
argument += string.Format(" -U {0} -P {1}", "sa", "abc@123");
var process = Process.Start("sqlcmd.exe", argument);
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
while (true)
{
// wait for the process exits. The WaitForExit() method doesn't work
if (process.HasExited)
break;
Thread.Sleep(500);
}
我不明白这三行是如何工作的
string tmpFile = Path.GetTempFileName();
SqlConnectionStringBuilder connection=new SqlConnectionStringBuilder(@"Data Source=LPTP2\LPTP2;Initial Catalog=HemoTrace;Integrated Security=True");
string argument = string.Format(@" -S {0} -d {1} -i ""{2}"" -o ""{3}""",
@".\SQLEXPRESS", "HemoTrace", path, tmpFile);
// append user/password if not use integrated security
if (!connection.IntegratedSecurity)
argument += string.Format(" -U {0} -P {1}", "sa", "abc@123");
为什么我这样做意味着我想运行一个 SQL SCRIPT 脚本来创建一个数据库。但我想使用 sqlcmd。在客户端位置,如果我执行我的 .exe 文件,它会完成我的工作(将数据库附加到服务器)。
请帮助我解决这个问题。