我从网上下载了一段数据库备份与恢复例子.求大家给点注释与我,谢天谢地.  <% @Import Namespace="System.Data" %> 
  <% @Import Namespace="System.Data.SqlClient" %> 
 <HTML> 
     <HEAD> 
         <title>获取服务器端数据库列表示例</title> 
          <script language="C#" runat="server">              string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer1"]; 
             void Page_Load(object sender, System.EventArgs e) 
              { 
                 if(!IsPostBack) 
                  {                      string db_query = "sp_helpdb"; //请问"sp_helpdb"; 是什么来的?
 
                     SqlCommand myCommand = new SqlCommand(db_query, new SqlConnection(ConnStr)); 
                     myCommand.Connection.Open(); 
                     SqlDataReader dr = myCommand.ExecuteReader(); 
 
                     dbDropDownList.DataSource = dr; 
                     dbDropDownList.DataTextField = "name"; //何来的?
                     dbDropDownList.DataBind(); 
 
                     //关闭DataReader对象和数据库连接 
                     dr.Close(); 
                     myCommand.Connection.Close(); 
                 } 
             } 
              
             void dbDropDownList_SelectedIndexChanged(object sender, System.EventArgs e) 
              { 
                 pathTextBox.Text = @"C:\BACKUP\" + dbDropDownList.SelectedValue + ".bak"; 
             } 
              
             void backupButton_Click(object sender, System.EventArgs e) 
              { 
                 string path = pathTextBox.Text; 
                 string dbname = dbDropDownList.SelectedValue; 
 
                 string backupSql = "use master;"; 
                 backupSql += "backup database @dbname to disk = @path;"; 
              
                 SqlCommand myCommand = new SqlCommand(backupSql, new SqlConnection(ConnStr)); 
 
                 myCommand.Parameters.Add("@dbname", SqlDbType.Char); 
                 myCommand.Parameters["@dbname"].Value = dbname; 
                 myCommand.Parameters.Add("@path", SqlDbType.Char); 
                 myCommand.Parameters["@path"].Value = path; 
 
                 try 
                  { 
                     myCommand.Connection.Open(); 
                     myCommand.ExecuteNonQuery(); 
                     infoLabel.Text = "备份成功"; 
                 } 
                 catch(Exception ex) 
                  { 
                     infoLabel.Text = "备份失败<br>" + ex.ToString(); 
                 } 
                 finally 
                  { 
                     myCommand.Connection.Close(); 
                 } 
             } 
              
             void restoreButton_Click(object sender, System.EventArgs e) 
              { 
                 string path = pathTextBox.Text; 
                 string dbname = dbDropDownList.SelectedValue; 
 
                 string restoreSql = "use master;"; 
                 restoreSql += "restore database @dbname from disk = @path;"; 
                 SqlCommand myCommand = new SqlCommand(restoreSql, new SqlConnection(ConnStr)); 
                 myCommand.Parameters.Add("@dbname", SqlDbType.Char); 
                 myCommand.Parameters["@dbname"].Value = dbname; 
                 myCommand.Parameters.Add("@path", SqlDbType.Char); 
                 myCommand.Parameters["@path"].Value = path; 
                 try 
                  { 
                     myCommand.Connection.Open(); 
                     myCommand.ExecuteNonQuery(); 
                     infoLabel.Text = "恢复成功"; 
                 } 
                 catch(Exception ex) 
                  { 
                     infoLabel.Text = "恢复失败<br>" + ex.ToString(); 
                 } 
                 finally 
                  { 
                     myCommand.Connection.Close(); 
                 } 
             } 
          
         </script> 
     </HEAD> 
     <body> 
         <form id="Form1" method="post" runat="server"> 
             <h3>获取服务器端数据库列表示例</h3> 
                 数据库列表: 
                 <asp:dropdownlist id="dbDropDownList" runat="server" AutoPostBack="True"  
                     OnSelectedIndexChanged="dbDropDownList_SelectedIndexChanged"></asp:dropdownlist> 
                 <br><br> 
                 请输入备份目录及备份文件名: 
                 <asp:textbox id="pathTextBox" runat="server" Width="224px"> 
                     C:\BACKUP\Northwind.bak</asp:textbox>(目录必须存在) 
                 <br><br> 
                 <asp:button id="backupButton" runat="server" Font-Size="9pt" Text="备份数据库"  
                     OnClick="backupButton_Click"></asp:button> 
                 <asp:button id="restoreButton" runat="server" Font-Size="9pt" Text="恢复数据库"  
                     OnClick="restoreButton_Click"></asp:button> 
                 <br><br> 
                 <asp:Label id="infoLabel" runat="server"></asp:Label> 
         </form> 
     </body> 
 </HTML>

解决方案 »

  1.   

    sp_helpdb是SQL Server自带的一个stored procedure
    自己在查询分析器里面执行exec sp_helpdb,看一下有什么结果,你就会明白的。
      

  2.   

    <% @Import Namespace="System.Data" %> 
      <% @Import Namespace="System.Data.SqlClient" %> 
     <HTML> 
         <HEAD> 
             <title>获取服务器端数据库列表示例</title> 
              <script language="C#" runat="server">              string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer1"]; 
                 void Page_Load(object sender, System.EventArgs e) 
                  { 
                     if(!IsPostBack) 
                      {                      string db_query = "sp_helpdb"; //请问"sp_helpdb"; 是什么来的?
    // 数据库表名称.
     
                         SqlCommand myCommand = new SqlCommand(db_query, new SqlConnection(ConnStr)); 
                         myCommand.Connection.Open(); 
                         SqlDataReader dr = myCommand.ExecuteReader(); 
     
                         dbDropDownList.DataSource = dr; 
                         dbDropDownList.DataTextField = "name"; //何来的?
    //数据库的数据表名的字断名.
                         dbDropDownList.DataBind(); 
     
                         //关闭DataReader对象和数据库连接 
                         dr.Close(); 
                         myCommand.Connection.Close(); 
                     } 
                 } 
                  
                 void dbDropDownList_SelectedIndexChanged(object sender, System.EventArgs e) 
                  { 
                     pathTextBox.Text = @"C:\BACKUP\" + dbDropDownList.SelectedValue + ".bak"; 
                 } 
                  
                 void backupButton_Click(object sender, System.EventArgs e) 
                  { 
                     string path = pathTextBox.Text; 
                     string dbname = dbDropDownList.SelectedValue; 
     
                     string backupSql = "use master;"; 
                     backupSql += "backup database @dbname to disk = @path;"; 
                  
                     SqlCommand myCommand = new SqlCommand(backupSql, new SqlConnection(ConnStr)); 
     
                     myCommand.Parameters.Add("@dbname", SqlDbType.Char); 
                     myCommand.Parameters["@dbname"].Value = dbname; 
                     myCommand.Parameters.Add("@path", SqlDbType.Char); 
                     myCommand.Parameters["@path"].Value = path; 
     
                     try 
                      { 
                         myCommand.Connection.Open(); 
                         myCommand.ExecuteNonQuery(); 
                         infoLabel.Text = "备份成功"; 
                     } 
                     catch(Exception ex) 
                      { 
                         infoLabel.Text = "备份失败<br>" + ex.ToString(); 
                     } 
                     finally 
                      { 
                         myCommand.Connection.Close(); 
                     } 
                 } 
                  
                 void restoreButton_Click(object sender, System.EventArgs e) 
                  { 
                     string path = pathTextBox.Text; 
                     string dbname = dbDropDownList.SelectedValue; 
     
                     string restoreSql = "use master;"; 
                     restoreSql += "restore database @dbname from disk = @path;"; 
                     SqlCommand myCommand = new SqlCommand(restoreSql, new SqlConnection(ConnStr)); 
                     myCommand.Parameters.Add("@dbname", SqlDbType.Char); 
                     myCommand.Parameters["@dbname"].Value = dbname; 
                     myCommand.Parameters.Add("@path", SqlDbType.Char); 
                     myCommand.Parameters["@path"].Value = path; 
                     try 
                      { 
                         myCommand.Connection.Open(); 
                         myCommand.ExecuteNonQuery(); 
                         infoLabel.Text = "恢复成功"; 
                     } 
                     catch(Exception ex) 
                      { 
                         infoLabel.Text = "恢复失败<br>" + ex.ToString(); 
                     } 
                     finally 
                      { 
                         myCommand.Connection.Close(); 
                     } 
                 } 
              
             </script> 
         </HEAD> 
         <body> 
             <form id="Form1" method="post" runat="server"> 
                 <h3>获取服务器端数据库列表示例</h3> 
                     数据库列表: 
                     <asp:dropdownlist id="dbDropDownList" runat="server" AutoPostBack="True"  
                         OnSelectedIndexChanged="dbDropDownList_SelectedIndexChanged"></asp:dropdownlist> 
                     <br><br> 
                     请输入备份目录及备份文件名: 
                     <asp:textbox id="pathTextBox" runat="server" Width="224px"> 
                         C:\BACKUP\Northwind.bak</asp:textbox>(目录必须存在) 
                     <br><br> 
                     <asp:button id="backupButton" runat="server" Font-Size="9pt" Text="备份数据库"  
                         OnClick="backupButton_Click"></asp:button> 
                     <asp:button id="restoreButton" runat="server" Font-Size="9pt" Text="恢复数据库"  
                         OnClick="restoreButton_Click"></asp:button> 
                     <br><br> 
                     <asp:Label id="infoLabel" runat="server"></asp:Label> 
             </form> 
         </body> 
     </HTML>