用C#.NET WinForm1. 如何做一个类似sql server 2000服务管理器的东东?
要求能通过sql server服务器的ip、端口、sa帐号密码来启动、停止远程的sql server就行了2. 如何在任何一部电脑上调用一下程序?(不可以用绝对路径)
通讯录
记事本
写字板
计算器
Microsoft Word
Microsoft Excel请热情帮忙,给出思路和部分示例代码,我会尽快结贴,谢谢! ^_^
要求能通过sql server服务器的ip、端口、sa帐号密码来启动、停止远程的sql server就行了2. 如何在任何一部电脑上调用一下程序?(不可以用绝对路径)
通讯录
记事本
写字板
计算器
Microsoft Word
Microsoft Excel请热情帮忙,给出思路和部分示例代码,我会尽快结贴,谢谢! ^_^
使用sqldmo组件:
第二个问题:
.net提供了进程管理的类,
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdiagnosticsprocessclasstopic.htm
像word之类的可自动化对象,还可以使用自动化方式
http://www.c-sharpcorner.com/Code/2002/May/WinServiceAdmin.aspto second question: you can use interop for word and excel to call winword.exe and excel.
ms-help://MS.VSCC.2003/MS.MSDNQTR.2005JAN.1033/cssample/html/vcsamWordAutomationSampleDemonstratesAutomatingMicrosoftWord.htm
2,用Process.Start方法可启动这些程序,但最好放在Try语句块中
会自动在SystemBoot\Windows目录下找:
Process.Start("notepad");//记事本
Process.Start("calc");//计算器
Process.Start("C:\Program Files\Windows NT\Accessories\wordpad.exe");//写字板
Process.Start("C:\Program Files\Outlook Express\wab.exe");//通讯录
//......
能不能给个例子啊?
ms-help://MS.MSDNQTR.2003FEB.2052/sqldmo/dmoref_m_s_7vg2.htm //启动sqlserver
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace WindowsApplication1
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(120, 200);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void button1_Click(object sender, System.EventArgs e)
{
string title="黄海学习的C# word生成文档";
object titleLengh=title.Length; //得到长度是不是因为想要居中,算出位置?
string first="\n 公司最近需要利用C#对项目进行编程,其"+ // \n可能表示空出二个空格来
"中存在一个功能就是可自动生成WORD文档,但一直以来都"+
"找不到什么好办法,无奈之下,只有自已学着写一个了.第一次写WORD的东东,写的不好请大家不要见笑,对了张虹波老师今天怎么样了呢?我不知道!";
string second="\n 如果能真正生成WORD文档的好处有:";
string third="\n1、根据数据库信息自动生成文档;";
string forth="\n2、免去书写文档之苦;";
string fifth="\n3、可以通过邮件方式传出文档。";
object missing;
object zero=0;
Word.ApplicationClass wa=new Word.ApplicationClass();
missing=System.Reflection.Missing.Value;
wa.Visible=true;
wa.Documents.Add(ref missing,ref missing,ref missing,ref missing);
Word.Range myRange=wa.ActiveDocument.Range(ref zero,ref zero);
object r=myRange;
Word.Paragraph p=wa.ActiveDocument.Paragraphs.Add(ref r);
p.Range.InsertBefore(title);
Word.Range titleRange=wa.ActiveDocument.Range(ref zero,ref titleLengh);
titleRange.Font.Size=24;
titleRange.Font.Name="隶书";
titleRange.Font.Color=Word.WdColor.wdColorBlue;
titleRange.Paragraphs.Alignment=Word.WdParagraphAlignment.wdAlignParagraphCenter;//对齐到中间
Word.Range firstR=wa.ActiveDocument.Paragraphs.Item(2).Range;
r=firstR;
p=wa.ActiveDocument.Paragraphs.Add(ref r);
firstR.Font.Size=12;
firstR.Paragraphs.Alignment=Word.WdParagraphAlignment.wdAlignParagraphJustify;
firstR.InsertAfter(first);
//firstR.InsertParagraphAfter();
firstR.InsertAfter(second);
firstR.InsertAfter(third);
firstR.InsertAfter(forth);
firstR.InsertAfter(fifth);
}
}
}
using System.IO;//==============================================================================
//用途 : 管理数据库服务器(比如列了局域网内所有数据库服务器名称等)
// 因为使用了sqdmo,所以分发到客户端时必须加入下列文件
// Sqldmo.dll
// Sqldmo.rll(必须初放置在c:\Winnt\System32\Resources\1033中)
// Sqlsvc.dll
// Sqlsvc.rll
// Sqlwoa.dll
// Sqlresld.dll
// Sqlwid.dll
// W95scm.dll
// 如果客户端安装sql客户端工具或者程序运行在安装有
// sql server2000sp2以上的服务器端,则不用作处理可直接运行
//=============================================================================
namespace micromouse.ClassLibrary
{
/// <summary>
/// SQLServer数据库管理
/// </summary>
public class SQLServer
{
public SQLServer()
{
} /// <summary>
/// 获得局域网内所有SQL服务器名称(不一定准确)
/// </summary>
/// <returns>当前局域网所有服务器名</returns>
static public string[] GetAllServerName()
{
SQLDMO.Application application=new SQLDMO.ApplicationClass(); //Application对象
SQLDMO.NameList namelServers; //包括所有服务器的NameList集合对象
string[] astrServerNames; //返回所有服务器名 try
{
//获得所有服务器
namelServers=application.ListAvailableSQLServers();
//重新初始化数组名大小以存储所有服务器名
astrServerNames=new string[namelServers.Count]; //填充所有服务器名到服务器名数组中
for(int intIndex=0;intIndex<=namelServers.Count-1;intIndex++)
{
//NameList集合对象的索引从1开始
astrServerNames[intIndex]=namelServers.Item(intIndex+1);
} //返回服务器名数组
return astrServerNames;
}
catch(Exception ex)
{
//发生错误,抛出异常
throw ex;
}
} /// <summary>
/// 获取指定服务器的状态
/// </summary>
/// <param name="strServerName">要获取状态的服务器名</param>
/// <returns>SQL服务器的状态</returns>
static public SQLDMO.SQLDMO_SVCSTATUS_TYPE GetServerStatus(string strServerName)
{
//SQLServer对象,代表一个SQL服务器
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); //设置想要获得状态的服务器
sqlserver.Name=strServerName; try
{
//返回指定服务器状态
return sqlserver.Status;
}
catch
{
//发生错误,返回未知状态
return SQLDMO.SQLDMO_SVCSTATUS_TYPE.SQLDMOSvc_Unknown;
} } /// <summary>
/// 开始SQL服务
/// </summary>
/// <param name="strServerName">要启动服务的服务器名(使用NT验证)</param>
/// <returns>服务是否成功启动</returns>
static public bool StartServerService(string strServerName)
{
//SQLServer对象,代表一个SQL服务器
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
{
//启用NT验证
sqlserver.LoginSecure=true; //启动服务
//false:如果SQL服务正在运行则不启动服务;
//true: 如果SQL服务正在运行也启动服务
sqlserver.Start(false,strServerName,string.Empty,string.Empty); //返回启动成功
return true;
}
catch(Exception ex)
{
throw ex; //抛出异常
}
} /// <summary>
/// 启动SQL服务(使用SQL自身安全验证)
/// </summary>
/// <param name="strServerName">服务器名</param>
/// <param name="strLoginName">用户名</param>
/// <param name="strLoginPassword">密码</param>
/// <returns>是否成功启动</returns>
static public bool StartServerService(string strServerName,string strLoginName,string strLoginPassword)
{
//SQLServer对象,代表一个SQL服务器
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
{
//启动服务
sqlserver.Start(false,strServerName,strLoginName,strLoginPassword); //返回启动成功
return true;
}
catch(Exception ex)
{
throw ex; //抛出异常
}
} /// <summary>
/// 停止SQL服务
/// </summary>
/// <param name="strServerName">要停止服务的服务器名(使用NT验证)</param>
/// <returns>服务是否已经停止</returns>
static public bool StopServerService(string strServerName)
{
//SQLServer对象,代表一个SQL服务器
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
{
//设置服务器名
sqlserver.Name=strServerName;
//停止服务(停止服务不需要验证)
sqlserver.Stop(); //返回停止服务成功
return true;
}
catch(Exception ex)
{
throw ex; //抛出异常
}
} /// <summary>
/// 连接到一个SQL服务器并返回一个SQLServer对象
/// </summary>
/// <param name="strServerName">服务器名(使用NT集成验证方式)</param>
/// <returns>已连接到的SQLServer对象</returns>
static public SQLDMO.SQLServer ConnectServer(string strServerName)
{
//SQLServer对象,代表一个SQL服务器
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
{
//启用NT集成验证试
sqlserver.LoginSecure=true;
//连接到SQL服务器
sqlserver.Connect(strServerName,string.Empty,string.Empty); //返回已连接的sqlserver对象
return sqlserver;
}
catch(Exception ex)
{
throw ex; //抛出异常
}
} /// <summary>
/// 连接到一个SQL服务器并返回一个SQLServer对象
/// </summary>
/// <param name="strServerName">服务器名</param>
/// <param name="strLoginName">用户名</param>
/// <param name="strLoginPassword">密码</param>
/// <returns>已连接的SQL服务器对象</returns>
static public SQLDMO.SQLServer ConnectServer(string strServerName,
string strLoginName,string strLoginPassword)
{
//SQLServer对象,代表一个SQL服务器
SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
{
//启用SQL验证
sqlserver.LoginSecure=false;
//连接到SQL服务器
sqlserver.Connect(strServerName,strLoginName,strLoginPassword); //返回已连接的sqlserver对象
return sqlserver;
}
catch(Exception ex)
{
throw ex; //抛出异常
}
} /// <summary>
/// 备份数据库
/// </summary>
/// <param name="sqlserver">执行备份的服务器</param>
/// <param name="strDatabaseName">要备份的数据库名</param>
/// <param name="strBackupFileName">备份后的文件名</param>
/// <param name="PercentComplete">完成百分比委托</param>
/// <returns>是否成功备份</returns>
static public bool BackupDataBase(SQLDMO.SQLServer sqlserver,
string strDatabaseName,string strBackupFileName,
SQLDMO.BackupSink_PercentCompleteEventHandler PercentComplete)
{
//Backup对象,代表一次备份操作
SQLDMO.Backup backup=new SQLDMO.BackupClass(); try
{
backup.PercentComplete+=PercentComplete; //完成百分比委托
backup.Database=strDatabaseName; //执行备份的数据库名
backup.Files=strBackupFileName; //备分后的文件名
backup.SQLBackup(sqlserver); //开始备份 //没有发生错误,返回备份成功
return true;
}
catch(Exception ex)
{
throw ex; //设置异常
}
} /// <summary>
/// 恢复备份的数据库
/// </summary>
/// <param name="sqlserver">执行恢复请求的服务器</param>
/// <param name="strDatabaseName">接收恢复的数据库名</param>
/// <param name="strRestoreFileName">提供恢复数据的文件名</param>
/// <param name="PercentComplete">完成百分比委托</param>
/// <returns>是否成功恢复</returns>
static public bool RestoreDataBase(SQLDMO.SQLServer sqlserver,
string strDatabaseName,string strRestoreFileName,
SQLDMO.RestoreSink_PercentCompleteEventHandler PercentComplete)
{
//Restore对象,代表一次恢复操作
SQLDMO.Restore restore=new SQLDMO.RestoreClass(); try
{
restore.PercentComplete+=PercentComplete; //完成百分比委托
restore.Database=strDatabaseName; //接收恢复的数据库名
restore.Files=strRestoreFileName; //提供恢复数据的文件名
restore.SQLRestore(sqlserver); //开始恢复 //没有发生错误,返回成功恢复
return true;
}
catch(Exception ex)
{
throw ex; //设置异常
}
}
/// 附加数据库到SQL服务器
/// </summary>
/// <param name="sqlserver">SQL服务器</param>
/// <param name="strDatabaseName">数据库名</param>
/// <param name="strFileName">提供数据库物理文件的文件名</param>
/// <returns>是否成功附加</returns>
static public bool ExecuteAttachDatabase(SQLDMO.SQLServer sqlserver,
string strDatabaseName,string strFileName)
{
try
{
//附加数据库
sqlserver.AttachDBWithSingleFile(strDatabaseName,strFileName); //没有发生错误,附加成功
return true;
}
catch(Exception ex)
{
throw ex; //抛出异常
} } /// <summary>
/// 在服务器上建立数据库
/// </summary>
/// <param name="sqlserver">在其上建立数据库的服务器</param>
/// <param name="strDatabaseName">要建的数据库的数据库名</param>
/// <returns>是否成功建立</returns>
static public bool CreateDatabase(SQLDMO.SQLServer sqlserver,string strDatabaseName)
{
//返回是否执行成功
return ExecuteTransactionSQLCommand(
sqlserver, "Create Database " + strDatabaseName);
} /// <summary>
/// 删除数据库
/// </summary>
/// <param name="sqlserver">SQL服务器</param>
/// <param name="strDatabaseName">数据库名</param>
/// <returns>是否已删除数据库</returns>
static public bool DeleteDatabase(SQLDMO.SQLServer sqlserver,string strDatabaseName)
{
//返回是否成功删除
return ExecuteTransactionSQLCommand(
sqlserver, "Drop Database " + strDatabaseName);
} /// <summary>
/// 执行SQL脚本文件
/// </summary>
/// <param name="sqlserver">SQL服务器</param>
/// <param name="strDatabaseName">数据库名</param>
/// <param name="strSQLScriptFileName">脚本文件名</param>
/// <returns>是否成功执行</returns>
static public bool ExecuteSQLScriptFile(SQLDMO.SQLServer sqlserver,
string strDatabaseName,string strSQLScriptFileName)
{
//脚本文件内容
string strScriptFileContent; //获得脚本文件内容
try
{
//StreamReader对象,用以读取脚本文件内容
StreamReader srScriptFile=new StreamReader(strSQLScriptFileName); //将读取的内容存储到strScriptFileContent变量中
strScriptFileContent=srScriptFile.ReadToEnd(); //关闭流
srScriptFile.Close();
}
catch(IOException iex)
{
throw new Exception(iex.Message); //设置异常
}
catch(Exception ex)
{
throw ex; //设置异常
} //执行SQL文件内容
return ExecuteTransactionSQLCommand(sqlserver,strScriptFileContent);
} /// <summary>
/// 获得SQL数据文件路径
/// </summary>
/// <param name="sqlserver">SQL服务器</param>
/// <returns>SQL数据文件路径</returns>
static public string GetSQLDataPath(SQLDMO.SQLServer sqlserver)
{
//返回默认数据库文件路径
return sqlserver.Registry.SQLDataRoot;
} /// <summary>
/// 获得SQL应用程序文件路径
/// </summary>
/// <param name="sqlserver">SQL服务器</param>
/// <returns>SQL应用程序文件路径</returns>
static public string GetSQLRootPath(SQLDMO.SQLServer sqlserver)
{
//返回应用程序文件夹
return sqlserver.Registry.SQLRootPath;
} /// <summary>
/// 执行TransactSQL语句
/// </summary>
/// <param name="sqlserver">SQL服务器</param>
/// <param name="strTransactionSQLCommand">TransactSQL语句</param>
/// <returns>是否成功执行</returns>
static public bool ExecuteTransactionSQLCommand(
SQLDMO.SQLServer sqlserver,string strTransactionSQLCommand)
{
try
{
//执行TransactSQL语句
sqlserver.ExecuteImmediate(strTransactionSQLCommand,
SQLDMO.SQLDMO_EXEC_TYPE.SQLDMOExec_Default,
strTransactionSQLCommand.Length); //返回执行成功
return true;
}
catch(Exception ex)
{
throw ex; //设置异常
}
}
}
}