在installSheld好像安装时有执行*.sql文件一项。
在sqlserver中可以引用SQLDMO,用其中ExecuteImmediate()函数执行sql语句

解决方案 »

  1.   

    我要单击BUTTON时初始化数据库
      

  2.   

    那你就在按钮上写一些sql语句不就好了呀。什么create table呀、insert呀什么的。
      

  3.   

    用DELETE语句去删除每一个表,有没有更好的方法啊
      

  4.   

    没有 DELETE语句 简单实用
      

  5.   

    用DELETE语句删除表格里的记录,这是最简单的初始化啦
      

  6.   

    1、使用SQLDMO
    2、使用SQL脚本文件SQLDMO:
    #region 数据库备份
    /// <summary>
    /// 数据库备份
    /// </summary>
    public static void DbBackup(string p_strServer, string p_strUser, string p_strPWD, string p_strDataBaseName, string p_strBakFilePath)
    {
    SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
    SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try
    {
    oSQLServer.LoginSecure = false;
    oSQLServer.Connect(p_strServer, p_strUser, p_strPWD);
    oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    oBackup.Database = p_strDataBaseName;
    oBackup.Files = p_strBakFilePath;
    oBackup.BackupSetName = p_strDataBaseName;
    oBackup.BackupSetDescription = "数据库备份";
    oBackup.Initialize = true;
    oBackup.SQLBackup(oSQLServer);
    }
    catch(Exception ex)
    {
    throw ex;
    }
    finally
    {
    oSQLServer.DisConnect();
    }
    } public static void DbBackup(string p_strServer, string p_strDataBaseName, string p_strBakFilePath)
    {
    SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
    SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try
    {
    oSQLServer.LoginSecure = true;
    oSQLServer.LoginTimeout = 10;
    //oSQLServer.Connect();
    oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    oBackup.Database = p_strDataBaseName;
    oBackup.Files = p_strBakFilePath;
    oBackup.BackupSetName = p_strDataBaseName;
    oBackup.BackupSetDescription = "数据库备份";
    oBackup.Initialize = true;
    oBackup.SQLBackup(oSQLServer);
    }
    catch(Exception ex)
    {
    throw ex;
    }
    finally
    {
    oSQLServer.DisConnect();
    }
    } #endregion #region 数据库恢复
    /// <summary>
    /// 数据库恢复
    /// </summary>
    public static void DbRestore(string p_strServer, string p_strUser, string p_strPWD, string p_strDataBaseName, string p_strBakFilePath)
    {
    SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
    SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
    try
    {
    oSQLServer.LoginSecure = false;
    oSQLServer.Connect(p_strServer, p_strUser, p_strPWD);
    oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
    oRestore.Database = p_strDataBaseName;
    oRestore.Files = p_strBakFilePath;
    oRestore.FileNumber = 1;
    oRestore.ReplaceDatabase = true;

    oRestore.SQLRestore(oSQLServer);
    }
    catch(Exception ex)
    {
    throw ex;
    }
    finally
    {
    oSQLServer.DisConnect();
    }
    } #endregion
    脚本: public class ClassDBAccess
    {
    private SqlConnection Con;
    private string ConStr = ""; public ClassDBAccess(string p_strServerName, string p_strUserID, string p_strPWD, string p_DataBase)
    {
    try
    {
    ConStr = "server = " + p_strServerName + ";uid = " + p_strUserID + ";pwd = " + p_strPWD + ";database = " + p_DataBase;
    }
    catch
    {
    }
    } #region 属性 private string ConString
    {
    get
    {
    if(ConStr == "")
    {
    try
    {
    XmlDocument doc = new XmlDocument();
    doc.Load("ServerConfig.xml");

    string userid = doc.SelectSingleNode("ServerConfig/UserId").InnerText;
    string password = doc.SelectSingleNode("ServerConfig/PassWord").InnerText;
    string servername = doc.SelectSingleNode("ServerConfig/ServerName").InnerText;
    string database = doc.SelectSingleNode("ServerConfig/DataBase").InnerText;
    ConStr = "server = " + servername + ";uid = "
    + userid + ";pwd = " + password + ";database = " + database;
    }
    catch(Exception ex)
    {
    throw ex;
    }
    } return ConStr;
    }
    } public SqlConnection MyConnection
    {
    get
    {
    if(Con == null)
    {
    Con = new SqlConnection(ConStr);
    }
    return Con;
    }
    }

    #endregion
    /// <summary>
    /// 执行Sql文件
    /// </summary>
    /// <param name="varFileName"></param>
    /// <returns></returns>
    public bool ExecuteSqlFile(string varFileName)
    {
    if(!File.Exists(varFileName))
    {
    return false;
    } //StreamReader sr = File.OpenText(varFileName); FileStream fs= new FileStream(varFileName, System.IO.FileMode.Open);
    StreamReader sr=new StreamReader(fs,System.Text.Encoding.Default); ArrayList alSql = new ArrayList(); string commandText = ""; string varLine = ""; while(sr.Peek() > -1)
    {
    varLine = sr.ReadLine();
    if(varLine == "")
    {
    continue;
    }
    if(varLine != "GO")
    {
    commandText += varLine;
    commandText += " \r\n ";
    }
    else
    {
    alSql.Add(commandText);
    commandText = "";
    }
    }

    sr.Close(); try
    {
    ExecuteCommand(alSql);
    }
    catch
    {
    return false;
    } return true;
    }
    private void ExecuteCommand(ArrayList varSqlList)
    {
    MyConnection.Open();
    SqlTransaction varTrans = MyConnection.BeginTransaction(); SqlCommand command = new SqlCommand();
    command.Connection = MyConnection;
    command.Transaction = varTrans; try
    {
    foreach(string varcommandText in varSqlList)
    {
    command.CommandText = varcommandText;
    command.ExecuteNonQuery();
    }
    varTrans.Commit();
    }
    catch(Exception ex)
    {
    varTrans.Rollback();
    throw ex;
    }
    finally
    {
    MyConnection.Close();
    }
    }
    }