以sqlserver2008R2為例。

創(chuàng)新互聯(lián)是專業(yè)的鄧州網(wǎng)站建設(shè)公司,鄧州接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鄧州網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
1、打開sql2008,使用windows身份登錄
2、登錄后,右鍵選擇“屬性”。左側(cè)選擇“安全性”,選中右側(cè)的“SQL Server 和 Windows 身份驗(yàn)證模式”以啟用混合登錄模式
3、選擇“連接”,勾選“允許遠(yuǎn)程連接此服務(wù)器”,然后點(diǎn)“確定”
4、展開“安全性”,“登錄名”;“sa”,右鍵選擇“屬性”
5、左側(cè)選擇“常規(guī)”,右側(cè)選擇“SQL Server 身份驗(yàn)證”,并設(shè)置密碼
6、右擊數(shù)據(jù)庫選擇“方面”
7、在右側(cè)的方面下拉框中選擇“服務(wù)器配置”;將“RemoteAccessEnabled”屬性設(shè)為“True”,點(diǎn)“確定”
8、至此SSMS已設(shè)置完畢,先退出,再用sa登錄,成功即表示sa帳戶已經(jīng)啟用
9、打開sql server配置管理器
10、下面開始配置SSCM,選中左側(cè)的“SQL Server服務(wù)”,確保右側(cè)的“SQL Server”以及“SQL Server Browser”正在運(yùn)行
11、在左則選擇sql server網(wǎng)絡(luò)配置節(jié)點(diǎn)下的sqlexpress的協(xié)議,在右側(cè)的TCP/IP默認(rèn)是“否”,右鍵啟用或者雙擊打開設(shè)置面板將其修改為“是”
12、選擇“IP 地址”選項(xiàng)卡,設(shè)置TCP的端口為“1433”
13、將"客戶端協(xié)議"的"TCP/IP"也修改為“Enabled”
配置完成,重新啟動SQL Server 2008。此時應(yīng)該可以使用了,但是還是要確認(rèn)一下防火墻。打開防火墻設(shè)置。將SQLServr.exe(C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe)添加到允許的列表中。
1、確定目標(biāo)Sqlserver是否允許遠(yuǎn)程訪問
2、確定目標(biāo)SqlServer服務(wù)端口是否是默認(rèn)端口
3、檢查數(shù)據(jù)庫名稱、密碼什么是否正確
1、添加引用
using System.Data.SqlClient;
2、建立連接調(diào)用
SqlConnection?myConnection?=?new?SqlConnection("數(shù)據(jù)庫連接字符串");
//數(shù)據(jù)庫連接字符串通常是Data?Source=localhost;Initial?Catalog=數(shù)據(jù)庫名;User?ID=用戶名;Password=密碼
SqlCommand?myCommand?=?new?SqlCommand();
myCommand.CommandText?=?string.Format("select?count(*)?from?{0}?where?columName={1}",表明,列值);//構(gòu)造SQL查詢語句?????String.Format?(String,?Object[])?將指定?String?中的格式項(xiàng)替換為指定數(shù)組中相應(yīng)?Object?實(shí)例的值的文本等效項(xiàng)。????????myCommand.Connection?=?myConnection;
try
{
myCommand.Connection.Open();
int?count?=?(int)myCommand.ExecuteScalar();
if?(count??0)???
{
//count大于0表示有,調(diào)用自己寫的一個方法來更新
UpdateData();
}
else
{
小于0表示沒有,調(diào)用這個方法來插入????????????
InsertData();
}
}
catch?(Exception?ex)
{
Response.Write(ex.ToString());
}
//UpdateData方法????
public?void?UpdateData()
{
SqlConnection?myConnection?=?new?SqlConnection("數(shù)據(jù)庫連接字符串");
SqlCommand?myCommand?=?new?SqlCommand();
myCommand.CommandText?=?"用來更新的SQL語句";
myCommand.Connection?=?myConnection;
try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
}
catch?(Exception?ex)
{
Response.Write(ex.ToString());
}
}
//InsertData方法?
public?void?InsertData()
{
SqlConnection?myConnection?=?new?SqlConnection("數(shù)據(jù)庫連接字符串");
SqlCommand?myCommand?=?new?SqlCommand();
myCommand.CommandText?=?"用來插入的SQL語句";
myCommand.Connection?=?myConnection;
try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
}
catch?(Exception?ex)
{
Response.Write(ex.ToString());
}
}
-----這些都是基礎(chǔ)的寫法,可以將其封裝在一個工具類中,方便調(diào)用。
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Configuration;
using?System.Data;
using?System.Data.SqlClient;
namespace?DBUtility
{
public?class?SqlHelper
{
//通過配置文件(app.config:xml)讀取連接字符串
public?static?string?connectionString?=?ConfigurationManager?.ConnectionStrings["ConnectionString"].ConnectionString;
//字段,通過連接字符串獲取連接對象
private?SqlConnection?con?=?new?SqlConnection(connectionString);
//屬性,判斷連接對象的狀態(tài)并打開連接對象
public?SqlConnection?Con
{
get?{
switch?(con.State)
{
case?ConnectionState.Broken:
con.Close();?//先正常關(guān)閉,釋放資源
con.Open();
break;
case?ConnectionState.Closed:
con.Open();
break;
case?ConnectionState.Connecting:
break;
case?ConnectionState.Executing:
break;
case?ConnectionState.Fetching:
break;
case?ConnectionState.Open:
break;
default:
break;
}
return?con;?}
set?{?con?=?value;?}
}
//執(zhí)行存儲過程或者SQL語句并返回數(shù)據(jù)集DataSet
public?DataSet?GetDataSet(string?strSQL,?CommandType?cmdType,?params?SqlParameter[]?values)
{
SqlCommand?cmd?=?PrepareCommand(strSQL,?cmdType,?values);
SqlDataAdapter?da?=?new?SqlDataAdapter(cmd);
DataSet?ds?=?new?DataSet();
da.Fill(ds);
return?ds;
}
//執(zhí)行存儲過程或者SQL語句并返回SqlDatareader
public?SqlDataReader?GetDataReader(string?strSQL,?CommandType?cmdType,?params?SqlParameter[]?values)
{
SqlCommand?cmd?=?PrepareCommand(strSQL,?cmdType,?values);
SqlDataReader?dr?=?cmd.ExecuteReader(CommandBehavior.CloseConnection);
return?dr;
}
//執(zhí)行存儲過程或者SQL語句并返回首行首列(新增方法的主鍵)
public?object?ExecuteScalar(string?strSQL,?CommandType?cmdType,?params?SqlParameter[]?values)
{
SqlCommand?cmd?=?PrepareCommand(strSQL,?cmdType,?values);
return?cmd.ExecuteScalar();
}
//執(zhí)行存儲過程或者SQL語句并返回受影響行數(shù)
public?int?ExecuteNonQuery(string?strSQL,?CommandType?cmdType,?params?SqlParameter[]?values)
{
SqlCommand?cmd?=?PrepareCommand(strSQL,?cmdType,?values);
return?cmd.ExecuteNonQuery();
}
//內(nèi)部方法,實(shí)例化命令對象并配置相關(guān)屬性
private?SqlCommand?PrepareCommand(string?strSQL,?CommandType?cmdType,params?SqlParameter[]?values)
{
SqlCommand?cmd?=?new?SqlCommand();
cmd.Connection?=?Con;
cmd.CommandText?=?strSQL;
cmd.CommandType?=?cmdType;
cmd.CommandTimeout?=?60;
cmd.Parameters.AddRange(values);
return?cmd;
}
}
}
C++連接SQL數(shù)據(jù)庫第一步 系統(tǒng)配置
1.設(shè)置SQLSERVER服務(wù)器為SQL登錄方式,并且系統(tǒng)安全性中的sa用戶要設(shè)置登錄功能為“啟用”,還有必須要有密碼。
2.需要在ODBC中進(jìn)行數(shù)據(jù)源配置,數(shù)據(jù)源選\”SQL SERVER”,登錄方式使用“使用輸入用戶登錄ID和密碼的SQL SERVER驗(yàn)證”,并填寫登錄名(sa)和密碼,注意一點(diǎn),密碼不能為空,這就意味著你的sa用戶必須得有密碼。否則無法通過系統(tǒng)本身的安全策略。測試通過就完成了配置。
C++連接SQL數(shù)據(jù)庫第二步 C++與SQL連接初始化
1.在你所建立的C++項(xiàng)目中的stdafx.h頭文件中引入ADO
具體代碼如下
#import “c:\Program Files\Common Files\System\ado\msado15.dll”
no_namespace rename(”EOF”, “adoEOF”) rename(”BOF”, “adoBOF”)
2.定義_ConnectionPtr變量后調(diào)用Connection對象的Open方法建立與服務(wù)器的連接。
數(shù)據(jù)類型_ConnectionPtr實(shí)際上是由類模板_com_ptr_t得到的一個具體的實(shí)例類。_ConnectionPtr類封裝了Connection對象的Idispatch接口指針及其一些必要的操作。可以通過這個指針操縱Connection對象。
例如連接SQLServer數(shù)據(jù)庫,代碼如下:
//連接到MS SQL Server
//初始化指針
_ConnectionPtr pMyConnect = NULL;
HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
return;
//初始化鏈接參數(shù)
_bstr_t strConnect = “Provider=SQLOLEDB;
Server=hch;
Database=mytest;
uid=sa; pwd=sa;”; //Database指你系統(tǒng)中的數(shù)據(jù)庫
//執(zhí)行連接
try
{
// Open方法連接字串必須四BSTR或者_(dá)bstr_t類型
pMyConnect-Open(strConnect, “”, “”, NULL);
}
catch(_com_error e)
{
MessageBox(e.Description(), “警告”, MB_OK|MB_ICONINFORMATION);
}//發(fā)生鏈接錯誤
C++連接SQL數(shù)據(jù)庫第三步 簡單的數(shù)據(jù)連接
//定義_RecordsetPtr變量,調(diào)用它Recordset對象的Open,即可打開一個數(shù)據(jù)集
//初始化過程 以下是個實(shí)例
_RecordsetPtr pRecordset;
if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))
{
return;
}
//執(zhí)行操作
try
{
pRecordset-Open(_variant_t(”userinfo”),
_variant_t((IDispatch*)pMyConnect),
adOpenKeyset, adLockOptimistic, adCmdTable);
}
catch (_com_error e)
{
MessageBox(”無法打開userinfo表\”, “系統(tǒng)提示”,
MB_OK|MB_ICONINFORMATION);
}
C++連接SQL數(shù)據(jù)庫第四步 執(zhí)行SQL語句
這里是關(guān)鍵,我認(rèn)為只要你懂點(diǎn)SQL語句那么一切都會方便許多比用上面的方法簡單,更有效率點(diǎn)。
首先
m_pConnection.CreateInstance(_uuidof(Connection));
//初始化Connection指針
m_pRecordset.CreateInstance(__uuidof(Recordset));
//初始化Recordset指針
CString strSql=”select * from tb_goods”;//具體執(zhí)行的SQL語句
m_pRecordset=m_pConnection-Execute(_bstr_t(strSql),
NULL, adCmdText);//將查詢數(shù)據(jù)導(dǎo)入m_pRecordset數(shù)據(jù)容器
至此 你的SQL語句已經(jīng)執(zhí)行完成了m_pRecordset內(nèi)的數(shù)據(jù)就是你執(zhí)行的結(jié)果。
取得記錄:
while(!m_pRecordset-adoEOF)//遍歷并讀取name列的記錄并輸出
{
CString temp = (TCHAR *)(_bstr_t)m_pRecordset-GetFields()-GetItem
(”name”)-Value;
AfxMessageBox(temp);
pRecordset-MoveNext();
}
插入記錄
//記得初始化指針再執(zhí)行以下操作
CString strsql;
strsql.Format(”insert into tb_goods(no,name, price)
values(’%d’,'%s’, %d)”,m_intNo,m_strName,m_intPrice);
m_pRecordset=m_pConnection-
Execute(_bstr_t(strsql),NULL,adCmdText);
修改記錄
CString strsql;
strsql.Format(”update tb_goods set name=’%s’ ,
price=%d where no=%d “,m_strName,m_intPrice,m_intNo);
m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);
刪除記錄
CString strsql;
strsql.Format(”delete from tb_goodswhere no= ‘%d’ “,m_intNo);
m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText)
本文標(biāo)題:c訪問sqlserver,c訪問sqlserver數(shù)據(jù)庫
標(biāo)題鏈接:http://chinadenli.net/article45/dsspihi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、移動網(wǎng)站建設(shè)、網(wǎng)站營銷、小程序開發(fā)、虛擬主機(jī)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容