① 用sqlDataReader和SqlDataAdapter讀取數據有啥區別
這個是這樣的,SqlDataReader只能用於讀,在讀的過程中資料庫一直保持打開狀態,不過讀的效率還是可以的
SqlDataAdapter(數據適配器)、DataSet
先將數據取出來放到dataset中,然後就可以關閉資料庫了,通過sqldataadapter還可以更新刪除資料庫中的東西,功能很強大,要好好學習。
像綁定某些數據源之類的話強烈建議用SqlDataAdapter(數據適配器)、DataSet
方法,這樣不僅綁定簡單而且可以做更新和刪除操作(當然用read讀出來後在建立連接去刪除也是可以的)找本書看看那吧,c#的書現在很多了,我手上都超過三本了
② 如何才能用EXCEL去連接SQL 資料庫讀取數據!!!!
1、首先打開SQL
Server資料庫,准備一個要導入的數據表,如下圖所示,數據表中插入一些數據
2、接下來打開Excel軟體,點擊數據菜單,然後選擇其他來源下面的來自SQL
Server選項
3、然後會彈出資料庫連接向導界面,在輸入框裡面輸入伺服器名稱,也就是計算機名
4、接下來就會出現導入內容的具體設置界面了,我們選擇要導入表,並且選擇一個空白單元格位置作為數據的導入位置
5、最後點擊確定按鈕,我們就可以看到SQL
Server中的數據就導入進Excel里了
③ 遠程連接SQL數據源
// S6_1Dlg.cpp : 實現文件
//
#include "stdafx.h"
#include "S6_1.h"
#include "S6_1Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用於應用程序「關於」菜單項的 CAboutDlg 對話框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 對話框數據
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 實現
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CS6_1Dlg 對話框
CS6_1Dlg::CS6_1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CS6_1Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//初始化資料庫操作
ifbegin=TRUE;//第一次打開
CString m_dbstr,m_errmsg,m_SQLstr;
m_dbstr.Format("DSN=%s;UID=%s;PWD=%s","SampleDB","","");//資料庫名稱,用戶,口令
TRY{
if(m_db.IsOpen())
m_db.Close();
m_db.OpenEx(m_dbstr);//通過ODBC來打開資料庫
m_record=new CRecordset(&m_db);
m_SQLstr="select * from CustomerTable;";//准備要執行的SQL語句
if(m_record->IsOpen())
m_record->Close();
m_record->Open(CRecordset::dynaset,m_SQLstr);//執行SQL語句,得到記錄集
if(m_record->IsBOF())
AfxMessageBox("NO RECORD IN TABLE");//報告記錄集是否為空
}
CATCH_ALL(e){
e->GetErrorMessage(m_errmsg.GetBuffer(128),128);
AfxMessageBox(m_errmsg);
return;
}
END_CATCH_ALL
}
void CS6_1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT1, m_userID);
DDX_Control(pDX, IDC_EDIT2, m_pwd);
DDX_Control(pDX, IDC_EDIT3, m_sex);
DDX_Control(pDX, IDC_EDIT4, m_old);
DDX_Control(pDX, IDC_EDIT5, m_Email);
DDX_Control(pDX, IDC_BUTTON1, m_button1);
DDX_Control(pDX, IDC_BUTTON2, m_button2);
}
BEGIN_MESSAGE_MAP(CS6_1Dlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
END_MESSAGE_MAP()
// CS6_1Dlg 消息處理程序
BOOL CS6_1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 將\「關於...\」菜單項添加到系統菜單中。
// IDM_ABOUTBOX 必須在系統命令范圍內。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
// 執行此操作
SetIcon(m_hIcon, TRUE); // 設置大圖標
SetIcon(m_hIcon, FALSE); // 設置小圖標
// TODO:在此添加額外的初始化代碼
return TRUE; // 除非設置了控制項的焦點,否則返回 TRUE
}
void CS6_1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向對話框添加最小化按鈕,則需要下面的代碼
// 來繪制該圖標。對於使用文檔/視圖模型的 MFC 應用程序,
// 這將由框架自動完成。
void CS6_1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用於繪制的設備上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使圖標在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 繪制圖標
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//當用戶拖動最小化窗口時系統調用此函數取得游標顯示。
HCURSOR CS6_1Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CS6_1Dlg::OnBnClickedButton1()//查詢下一條記錄
{
// TODO:在此添加控制項通知處理程序代碼
CString m_errmsg;
CDBVariant m_value;//存放記錄中的欄位值
TRY{
if(ifbegin)
{
m_record->MoveFirst();
ifbegin=FALSE;
}
else
m_record->MoveNext();//移向下一條記錄
if(!m_record->IsEOF())
{
m_record->GetFieldValue("UserID",m_value);
m_userID.SetWindowText(*m_value.m_pstring);//得到userID
m_record->GetFieldValue("UserPassword",m_value);
m_pwd.SetWindowText(*m_value.m_pstring);//得到密碼
m_record->GetFieldValue("Sex",m_value);
m_sex.SetWindowText(*m_value.m_pstring);//得到用戶的性別
m_record->GetFieldValue("Old",m_value);
CString str;
str.Format("%d",m_value.m_iVal);
m_old.SetWindowText(str);//得到用戶的年齡
m_record->GetFieldValue("Email",m_value);
m_Email.SetWindowText(*m_value.m_pstring);//得到用戶的電子郵件地址
}
else
{
AfxMessageBox("已經到達記錄集尾,單擊『清除』按鈕可以返回記錄集頂端");
m_button1.EnableWindow(FALSE);//禁止再繼續查詢
}
}
CATCH_ALL(e){
e->GetErrorMessage(m_errmsg.GetBuffer(128),128);
AfxMessageBox(m_errmsg);
return;
}
END_CATCH_ALL
}
void CS6_1Dlg::OnBnClickedButton2()//清空編輯控制項中的數據
{
// TODO:在此添加控制項通知處理程序代碼
m_Email.SetWindowText("");
m_userID.SetWindowText("");
m_old.SetWindowText("");
m_pwd.SetWindowText("");
m_sex.SetWindowText("");
ifbegin=TRUE;//將資料庫重新置成新打開的狀態
m_button1.EnableWindow(TRUE);//允許重新開始查看記錄
}
void CS6_1Dlg::OnBnClickedCancel()
{
// TODO: 在此添加控制項通知處理程序代碼
OnCancel();
}
④ 如何用SQL語句讀出EXCEL是的數據,請大家幫幫忙謝謝了
電腦的環境變數要設置一下吧,在管理工具理有一個數據源,要追加一個Miscrosoft
Access
Driver(*.mdb)的驅動
再看看別人怎麼說的。
⑤ sqlserver2008r2讀取遠程access資料庫
用ACCESS的升遷向導試試
⑥ C#sql從資料庫中讀取邏輯值
連接資料庫並從資料庫中獲取數據一般的操作。
1.創建一個SqlConnection對象,該對象用來連接資料庫,該對象有一個connectString屬性,描述了資料庫的連接字元串。說明了要連接的資料庫以及訪問資料庫的方式(如驗證方式、用戶名、密碼等信息)。設置好connectString後,就可以使用該對象的Open()方法,連接上資料庫。
2.創建一個SqlCommand,該對象的作用是:表示要對SQLServer資料庫執行的一個Transact-SQL語句或存儲過程。該對象有個Connection,通過該屬性可以設置或獲取實例使用的SqlConnection。要使用SqlCommand前,需要設置這個Connection屬性。可以把第1步創建的SqlConnection實例賦給該屬性SqlCommand還有一個commandText屬性:獲取或設置要對數據源執行的Transact-SQL語句、表名或存儲過程。這個字元串代表要對資料庫中的表要做的查詢等操作SqlCommand有一系列的執行方法。
3。SqlDataAdapter類:表示用於填充DataSet和更新SQLServer資料庫的一組數據命令和一個資料庫連接。該類有個SelectCommand屬性:獲取或設置一個Transact-SQL語句或存儲過程,用於在數據源中選擇記錄。可以把第二步創建的SqlCommand對象設置給該屬性。該屬性也可以在構造函數中作為參數傳遞進來。調用該類的Fill方法可以將查到的數據填充到DataSet中或者DataTable中
連接資料庫
this.OpenSqlConnection(connectionString);
查詢資料庫中是否有數據,如果有,清空表。
stringcmdString="select'學號'=StudentNumber,'姓名'=Name,'年齡'=Age,'性別'=SexfromStudents";
//創建SqlCommand對象,sqlcommand表示要對SQLServer資料庫執行的一個Transact-SQL語句或存儲過程
SqlCommandcmd=newSqlCommand(cmdString);
cmd.Connection=connec;
SqlDataAdapter表示用於填充DataSet和更新SQLServer資料庫的一組數據命令和一個資料庫連接。
SqlDataAdapterada=newSqlDataAdapter(cmd);
DataSetset=newDataSet();
ada.Fill(set);
⑦ 如何用sql查詢直接讀取其他數據源
select * from #a where ......以#開頭的表是臨時表,名字可以隨便取