//执行按钮事件
private void btnExec_Click(object sender, EventArgs e)
{
CreateDataBase(txtUserName.Text, txtUserPwd.Text, cboServerList.SelectedItem.ToString());
}
/// <summary>
/// 调用Osql.exe执行建库脚本
/// </summary>
/// <param name="uid">数据库访问用户名</param>
/// <param name="pwd">数据库访问密码</param>
/// <param name="servername">本地服务器名称</param>
private void CreateDataBase(string uid, string pwd, string servername)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
string Path = System.Windows.Forms.Application.StartupPath;
string Parameter = "osql.exe -U " + uid + " -P " + pwd + " -S " + servername + " -i " + Path + @"\databaseSQL.sql";
try
{
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
p.Start();
p.StandardInput.WriteLine(Parameter);
p.StandardInput.WriteLine("exit");
p.StandardInput.WriteLine("exit");
p.WaitForExit();
p.Close();
//怎么确定执行完了?
}
catch (Exception e)
{
MessageBox.Show(e.Message);
this.Close();
}
} /// <summary>
/// 得到所有本地网络中可使用的SQL服务器列表
/// </summary>
/// <returns>服务器名称列表</returns>
public string[] GetServers()
{
string[] p_strServerList = null;
try
{
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
if (sqlServers.Count > 0)
{
p_strServerList = new string[sqlServers.Count];
for (int i = 0; i < sqlServers.Count; i++)
{
string srv = sqlServers.Item(i + 1);
if (srv != null)
{
p_strServerList[i] = srv;
}
}
for (int i = 0; i < p_strServerList.Length; i++)
{
cboServerList.Items.Add(p_strServerList[i]);
}
cboServerList.SelectedIndex = 0;
}
return p_strServerList;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return p_strServerList;
}
//手动获取本地SqlServer服务器名称
private void btnGetList_Click(object sender, EventArgs e)
{
GetServers();
}服务器都能正常获取,点击执行后感觉就一直在等待...
数据库是SqlServer 2000
进数据库去看没有想要的数据库
高手指点一下
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货