⑴ VC++如何導入資料庫
兩種方式:一種是手動,一種是代碼或宏
一:手動導出時,右鍵單擊要導出的表回\查詢\窗體等對象,選擇導答出,然後選擇導出格式為EXCEL的某版本,再點"導出"按鈕即可.手動導入時,右鍵單擊空白處,選擇導入,在導入類型中選擇EXCEL,然後找到自己要導入的文件,按提示一步步做就行了
二:用宏導出,在宏窗口中,選擇新建,然後在操作中選擇或輸入outputto,再選擇對象類型\名稱,輸出地址等,保存宏,然後即可雙擊宏即可實現導出,導入則要在操作中選擇或輸入TransferDatabase,其它設置類同,多試幾次就知道了.至於代碼,將宏轉換成代碼就知道了
⑵ 怎麼用vc把讀到的數據直接寫入SQL資料庫
這是典型的VC++資料庫編程,網上很多這樣的例子,下載一個看看。
liublog
⑶ 如何把vc中已讀出的信息存入到資料庫中
你這個是注冊表/配置文件的操作,和資料庫沒關系。
進行資料庫操作,你需要建立一個資料庫連接,然後通過執行SQL語句實現操作。
現在比較常用的方式就是ADO了。
具體的語法可以(注意strSRC根據你的資料庫不同要修改):
1、引入ADO庫文件
使用ADO前必須在工程的stdafx.h頭文件里用直接引入符號#import引入ADO庫文件,以使編譯器能正確編譯。代碼如下所示:
用#import引入ADO庫文件
#import "c:\program files\common files\system\ado\msado15.dll"no_namespaces rename("EOF" adoEOF")
這行語句聲明在工程中使用ADO,但不使用ADO的名字空間,並且為了避免常數沖突,將常數EOF改名為adoEOF。現在不需添加另外的頭文件,就可以使用ADO介面了。
2、初始化OLE/COM庫環境
必須注意的是,ADO庫是一組COM動態庫,這意味應用程序在調用ADO前,必須初始化OLE/COM庫環境。在MFC應用程序里,一個比較好的方法是在應用程序主類的InitInstance成員函數里初始化OLE/COM庫環境。
BOOL CMyAdoTestApp::InitInstance()
{
if(!AfxOleInit())//這就是初始化COM庫
{
AfxMessageBox(「OLE初始化出錯!」);
return FALSE;
}
……
}
_ConnectionPtr pConn;
if (FAILED(pConn.CreateInstance("ADODB.Connection")))
{
AfxMessageBox("Create Instance failed!");
return;
}
CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="suppersoft";
strSRC+=";Database=";
strSRC+="mydb";
strSRC+=";UID=SA;PWD=";
CString strSQL = "Insert into student(no,name,sex,address) values(3,'aaa','male','beijing')";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
_bstr_t bstrSRC(strSRC);
if (FAILED(pConn->Open(bstrSRC,"","",-1)))
{
AfxMessageBox("Can not open Database!");
pConn.Release();
return;
}
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
pConn->Execute(_bstr_t(strSQL),&vtOptional,-1);
pConn.Release();
AfxMessageBox("ok!");
5、使用_RecordsetPtr介面(以連接SQL Server為例)
_RecordsetPtr pPtr;
if (FAILED(pPtr.CreateInstance("ADODB.Recordset")))
{
AfxMessageBox("Create Instance failed!");
return FALSE;
}
CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="210.46.141.145";
strSRC+=";Database=";
strSRC+="mydb";
strSRC+=";UID=sa;PWD=";
strSRC+="sa";
CString strSQL = "select id,name,gender,address from personal";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
{
AfxMessageBox("Open table failed!");
pPtr.Release();
return FALSE;
}
while(!pPtr->GetadoEOF())
{
_variant_t varNo;
_variant_t varName;
_variant_t varSex;
_variant_t varAddress;
varNo = pPtr->GetCollect ("id");
varName = pPtr->GetCollect ("name");
varSex = pPtr->GetCollect ("gender");
varAddress = pPtr->GetCollect ("address");
CString strNo =(char *)_bstr_t(varNo);
CString strName =(char *)_bstr_t(varName);
CString strSex =(char *)_bstr_t(varSex);
CString strAddress =(char *)_bstr_t(varAddress);
strNo.TrimRight();
strName.TrimRight();
strSex.TrimRight();
strAddress.TrimRight();
int nCount = m_list.GetItemCount();
int nItem = m_list.InsertItem (nCount,_T(""));
m_list.SetItemText (nItem,0,strNo);
m_list.SetItemText (nItem,1,strName);
m_list.SetItemText (nItem,2,strSex);
m_list.SetItemText (nItem,3,strAddress);
pPtr->MoveNext();
}
pPtr->Close();
pPtr.Release();
⑷ 在VC++中如何從資料庫中讀取數據和向資料庫中寫入數據
#include "stdafx.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
// 初始化—連接資料庫
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM庫環境
::CoInitialize(NULL);
try
{
// 創建Connection對象
m_pConnection.CreateInstance("ADODB.Connection");
// 設置連接字元串,必須是型或者_bstr_t類型
_bstr_t strConnect = "Provider=MSDASQL.1;Persist Security Info=False;User ID=***;Data Source=***;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
AfxMessageBox(e.Description());
}
}
// 執行查詢
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 連接資料庫,如果Connection對象為空,則重新連接資料庫
if(m_pConnection==NULL)
OnInitADOConn();
// 創建記錄集對象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的記錄
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
AfxMessageBox(e.Description());
}
// 返回記錄集
return m_pRecordset;
}
// 執行SQL語句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已經連接資料庫
if(m_pConnection == NULL)
OnInitADOConn();
// Connection對象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 參數RecordsAffected是操作完成後所影響的行數,
// 參數Options表示CommandText的類型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存儲過程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}
void ADOConn::ExitConnect()
{
// 關閉記錄集和連接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 釋放環境
::CoUninitialize();
}
⑸ 在vc++中增加記錄怎麼才能真正添加到資料庫裡面啊
可以用ADO方式連接上資料庫,再操作資料庫。這是我以前的一個函數,做連接資料庫用的,可以參考:BOOL CMyPropertyPage3::GetSqlDBLink(CString strDBName/*=""*/)
{
if (m_pConn->State)
{
m_pConn->Close();
}
// HRESULT hr;
CString strLink;
try
{
m_pConn->ConnectionTimeout=60;///設置超時時間為60秒 ,防止操作系統中裝有類似360安全衛士的軟體,阻斷進程進行放行提示
//以下是連接access2000資料庫。。。
//pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lo.mdb;","","",adModeUnknown);
//連接SQL資料庫
strLink = "Provider=SQLOLEDB;Server=";
strLink += m_strIP;
strLink += ";DATABASE=";//master;";
if ("" == strDBName)
strLink += "master";
else
strLink += strDBName;
strLink += ";UID=";
strLink += m_strUserName;
strLink += ";PWD=";
strLink += m_strPassWord;
m_pConn->Open(class _bstr_t(strLink), "", "", adModeUnknown);
}
catch(_com_error e)///捕捉異常
{
CString temp;
temp.Format("連接資料庫錯誤信息:%s",e.ErrorMessage());
return FALSE;
}
return TRUE;
}
操作資料庫:
CString sql="INSERT INTO TABLE1 (COL1,COL2) VALUES(1, 2)";
m_pConn->BeginTrans();
for (i=0; i<nCount; i++)
{
try
{
m_pConn->Execute(class _bstr_t(sql), &ra, adCmdText);
}
catch (_com_error e)
{
m_pConn->RollbackTrans();
AfxMessageBox(e.Description());
ASSERT(FALSE);
return FALSE;
}
}
try
{
m_pConn->CommitTrans();
}
catch (_com_error e)
{
ASSERT(FALSE);
return FALSE;
}
⑹ VC++怎麼連接資料庫
這是一個簡單連接資料庫的嵌入式程序(這個是.pc文件 要編譯成.c才可以運行) 你看看
#include <stdio.h>
#include <string.h>
#include <sqlca.h>
#include <sqlcpr.h>
int main()
{
exec sql include sqlca;
exec sql begin declare section;
int i;
char s_no[6];
char s_name[10];
char s_sex[4];
int s_age;
/**假設登陸信息如下所示 */
char* user_name="system";
char* user_pwd="system";
exec sql end declare section;
exec sql connect :user_name
identified by :user_pwd;
printf(" 用戶:%s 密碼:%s,哈哈,登陸成功.\n",user_name,user_pwd);
while(1){
printf("\n溫馨提示: 退出請輸入exit ");
printf("\n輸入性別: ");
gets(s_sex);
if(strcmp(s_sex,"M")==0||strcmp(s_sex,"F")==0){
system("cls");
printf("\n %s學生的基本信息表",s_sex);
printf("\n ---------------------");
printf("\n 學號 姓名 年齡");
printf("\n ---------------------");
exec sql declare sx cursor for
select sno,sname,age from s where sex=:s_sex;
exec sql open sx;
i=0;
while(1)
{
exec sql fetch sx into :s_no,:s_name,:s_age;
if(sqlca.sqlcode!=0) break;
i++;
printf("\n %s %s %d",s_no,s_name,s_age);
}
printf("\n ---------------------");
if(i!=0)
printf("\n 共%d人\n",i);
system("pause");
system("cls");
exec sql close sx;
}
else if(strcmp(s_sex,"exit")==0){
exit(0);
}
}
exec sql commit release;
return 0;
}
⑺ VC關於向本機資料庫里插入數據:
ADOConn
m_AdoConn;
m_AdoConn.OnInitADOConn();//初始化資料庫
_bstr_t
vSQL;
vSQL
=
"INSERT
INTO
Departments
(DepName,
Describes,
UpperId)
VALUES('"
+
DepName
+
"','"
+
Describes
+
"',"
+
strUpperId
+
")";
//執行
m_AdoConn.ExecuteSQL(vSQL);
這段代碼完成的功能如下:插入一條記錄到Departments
表中,這個表只有3列DepName,
Describes,
UpperId
看你這么熟了,照著這個寫應該不成問題
⑻ 如何用vc實現把兩個資料庫的內容導入一個excel中
兩種方式:一種是手動,一種是代碼或宏
一:手動導出時,右鍵單擊要導出的表\查詢\窗體等對象,選擇導出,然後選擇導出格式為EXCEL的某版本,再點"導出"按鈕即可.手動導入時,右鍵單擊空白處,選擇導入,在導入類型中選擇EXCEL,然後找到自己要導入的文件,按提示一步步做就行了
二:用宏導出,在宏窗口中,選擇新建,然後在操作中選擇或輸入outputto,再選擇對象類型\名稱,輸出地址等,保存宏,然後即可雙擊宏即可實現導出,導入則要在操作中選擇或輸入TransferDatabase,其它設置類同,多試幾次就知道了.至於代碼,將宏轉換成代碼就知道了