⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucreatedb.cpp

📁 自动附加SQL数据库,创建登录用户,使用简单方便,功能实用性强
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uCreateDB.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmCreateDB *frmCreateDB;
//---------------------------------------------------------------------------
__fastcall TfrmCreateDB::TfrmCreateDB(TComponent* Owner)
        : TForm(Owner)
{
   bIsConn=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCreateDB::bbtnRefreshClick(TObject *Sender)
{
   ADOConn->Close();
   ADOConn->ConnectionString = strConnectString;
   ADOConn->Open();
   strSQL="select name from sysdatabases";
   BUILD_SQL(qryPublic,strSQL);
   qryPublic->Open();
   qryPublic->First();
   cbDBList->Clear();
   while(!qryPublic->Eof)
   {
      cbDBList->Items->Add(qryPublic->FieldByName("name")->AsString);
      qryPublic->Next();
   }
   cbDBList->ItemIndex=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCreateDB::bbtnCheckConnClick(TObject *Sender)
{
   strServer=Trim(edtServer->Text);
   strDB=Trim(edtDefDB->Text);
   strUser=Trim(edtUser->Text);
   strPwd=Trim(edtPwd->Text);
   if(strServer.IsEmpty()||strDB.IsEmpty()||strUser.IsEmpty())
     ShowMessage("请将信息填写完整!");
   bbtnSaveInfo->Enabled=true;  

   try
   {
      strConnectString="Provider=SQLOLEDB.1;Password="+strPwd+";Persist Security Info=True;User ID="+strUser+";Initial Catalog="+strDB+";Data Source="+strServer;
      ADOConn->Close();
      ADOConn->ConnectionString = strConnectString;
      ADOConn->Open();
      if(ADOConn->Connected==true)
      {
         ShowMessage("连接成功!");
         AnsiString strIniFile=ExtractFileDir(Application->ExeName)+"\\Conn.ini";
         ini=new TIniFile(strIniFile);
         ini->WriteString("conn_info","Source",strServer);
         ini->WriteString("conn_info","Catalog",strDB);
         ini->WriteString("conn_info","ID",strUser);
         ini->WriteString("conn_info","password",strPwd);
         ShowMessage("数据库连接信息已保存到\n"+strIniFile);
         bbtnSaveInfo->Enabled=false;
         bbtnAddDB->Enabled=true;
         bbtnRefresh->Enabled=true;
         bbtnAddUser->Enabled=true;
         bIsConn=true;
      }
   }
   catch(Exception &e)
   {
      ShowMessage("连接失败!");
      bbtnAddDB->Enabled=false;
      bbtnRefresh->Enabled=false;
      bbtnAddUser->Enabled=false;
      bIsConn=false;
      return;
   }  
}
//---------------------------------------------------------------------------
void __fastcall TfrmCreateDB::ckDefaultClick(TObject *Sender)
{
   if(ckDefault->Checked==true)
   {
      edtServer->Text="127.0.0.1";
      edtDefDB->Text="master";
      edtUser->Text="sa";
      edtPwd->Text="";
   }
   else
   {
      edtServer->Text="";
      edtDefDB->Text="";
      edtUser->Text="";
      edtPwd->Text="";
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmCreateDB::sbtnMDFClick(TObject *Sender)
{
   AnsiString strDMFFile,strLDFFile,strTmp;
   if(OpenDialog1->Execute())
     strDMFFile=OpenDialog1->FileName;
   else
     return;
   strTmp=strDMFFile;
   strLDFFile=strTmp.Delete(strTmp.Length()-7,8)+"Log.LDF";
   edtMDF->Text=strDMFFile;
   edtLDF->Text=strLDFFile;
}
//---------------------------------------------------------------------------
void __fastcall TfrmCreateDB::bbtnAddDBClick(TObject *Sender)
{
   if(bIsConn)
   {
      if(UpperCase(edtMDF->Text.SubString(edtMDF->Text.Length()-2,3))!="MDF")
      {
         ShowMessage("选择的数据文件不正确!");
         return;
      }
      if(UpperCase(edtLDF->Text.SubString(edtLDF->Text.Length()-2,3))!="LDF")
      {
         ShowMessage("选择的日志文件不正确!");
         return;
      }
      if(Trim(edtDBName->Text).IsEmpty())
      {
         ShowMessage("数据库名不能为空!");
         return;
      }
      try
      {
         ADOConn->Close();
         ADOConn->ConnectionString = strConnectString;
         ADOConn->Open();
         strSQL="use master EXEC sp_attach_db @dbname=:dbname,@filename1=:filename1,@filename2=:filename2";
         BUILD_SQL(qryPublic,strSQL);
         SET_PARM(qryPublic,"dbname",Trim(edtDBName->Text));
         SET_PARM(qryPublic,"filename1",Trim(edtMDF->Text));
         SET_PARM(qryPublic,"filename2",Trim(edtLDF->Text));
         qryPublic->ExecSQL();
         ShowMessage("附加成功!");
      }
      catch(...)
      {
         ShowMessage("附加失败!\n请确定连接到数据库,或已存在该数据库!");
      }
   }
   else
   {
      ShowMessage("连接测试未成功,请确保连接成功再附加!");
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmCreateDB::sbtnLDFClick(TObject *Sender)
{
   AnsiString strLDFFile;
   if(OpenDialog1->Execute())
   {
     strLDFFile=OpenDialog1->FileName;
     edtLDF->Text=strLDFFile;
   }
   else
     return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmCreateDB::bbtnAddUserClick(TObject *Sender)
{
   if(bIsConn)
   {
      if(Trim(edtAddUser->Text).IsEmpty())
      {
         ShowMessage("用户名不能为空!");
         return;
      }
      try
      {
         ADOConn->Close();
         ADOConn->ConnectionString = strConnectString;
         ADOConn->Open();
         strSQL="use master EXEC sp_addlogin @loginame=:loginame,@passwd=:passwd,@defdb=:defdb";
         BUILD_SQL(qryPublic,strSQL);
         SET_PARM(qryPublic,"loginame",Trim(edtAddUser->Text));
         SET_PARM(qryPublic,"passwd",Trim(edtAddPwd->Text));
         SET_PARM(qryPublic,"defdb",Trim(cbDBList->Text));
         qryPublic->ExecSQL();
         ShowMessage("添加成功!");
      }
      catch(...)
      {
         ShowMessage("添加失败!\n请确定连接到数据库,或已存在该用户!");
      }
   }
   else
   {
      ShowMessage("连接测试未成功,请确保连接成功再添加!");
   }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -