① 用c語言怎麼連接資料庫呢
1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
voidmain()
{
HENVhenv;//環境句柄
HDBChdbc;//數據源句柄
HSTMThstmt;//執行語句句柄
unsignedchardatasource[]="數據源名稱";//即源中設置的源名稱
unsignedcharuser[]="用戶名";//資料庫的帳戶名
unsignedcharpwd[]="密碼";//資料庫的密碼
unsignedcharsearch[]="selectxmfromstuwherexh=0";
SQLRETURNretcode;//記錄各SQL函數的返回情況
//分配環境句柄
retcode=SQLAllocEnv(&henv);//等介於SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL
,&henv);
//設置ODBC環境版本號為3.0
retcode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
//分配連接句柄
retcode=SQLAllocConnect(henv,&hdbc);//等介於SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
//SQLSetConnectAttr(hdbc,SQL_LOGIN_TIMEOUT,(SQLPOINTER)(rgbValue),0);
//直接連接數據源
//如果是windows身份驗證,第二、三參數可以是
,也可以是任何字串
//SQL_NTS即"
retcode=SQLConnect(hdbc,datasource,SQL_NTS,user,SQL_NTS,pwd,SQL_NTS);
//分配語句句柄
retcode=SQLAllocStmt(hdbc,&hstmt);//等介於SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
//直接執行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數據緩沖區綁定資料庫中的相應欄位(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)
SQLBindCol(hstmt,i,SQL_C_CHAR,queryData[i-1],BUFF_LENGTH,0);
//遍歷結果集到相應緩沖區queryData
SQLFetch(hstmt);
/*
*對遍歷結果的相關操作,如顯示等
*/
//注意釋放順序,否則會造成未知錯誤!
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
② C#與SQL2005如何連接
資料庫連接你用vs點擊鏈接就行了
using System;
using System.Collections.Generic;
using System.Text;
using Model;
using System.Data;
using System.Data.SqlClient;
1.返回一個結果集
public static DataSet GetDataSet2(string sql)
{
DataSet ds = new DataSet();
string strConn = "server=.;uid=sa;pwd=;database=ShopManegerDB";
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds, "Shop");
return ds;
}
2.返回一個影響的行數
public static int update(string sql)
{
string strConn = "server=.;uid=sa;pwd=;database=ShopManegerDB";
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sql,conn);
conn.Open();
int i = cmd.ExecuteNonQuery();
conn.Close();
return i;
}
3.其他
Sql Server
· ODBC
o 標准連接(Standard Security):
"Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;"
1)當伺服器為本地時Server可以使用(local);
"Driver={SQL Server};Server=(local);Database=pubs;Uid=sa;Pwd=asdasd;"
2)當連接遠程伺服器時,需指定地址、埠號和網路庫
"Driver={SQL Server};Server=130.120.110.001;Address=130.120.110.001,1052;Network=dbmssocn;Database=pubs;Uid=sa;Pwd=asdasd;"
註:Address參數必須為IP地址,而且必須包括埠號
o 信任連接(Trusted connection): (Microsoft Windows NT 集成了安全性)
"Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;"
或者
"Driver={SQL Server};Server=Aron1;Database=pubs; Uid=;Pwd=;"
o 連接時彈出輸入用戶名和口令對話框:
Conn.Properties("Prompt") = adPromptAlways
Conn.Open "Driver={SQL Server};Server=Aron1;DataBase=pubs;"
· OLE DB, OleDbConnection (.NET)
o 標准連接(Standard Security):
"Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
o 信任連接(Trusted connection):
"Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
(如果連接一個具體的已命名SQLServer實例,使用Data Source=Servere Name\Instance Name;但僅適用於 SQLServer2000)例如:」Provider=sqloledb;Data Source=MyServerName\MyInstanceName;Initial Catalog=MyDatabaseName;User Id=MyUsername;Password=MyPassword;」
o 連接時彈出輸入用戶名和口令對話框:
Conn.Provider = "sqloledb"
Conn.Properties("Prompt") = adPromptAlways
Conn.Open "Data Source=Aron1;Initial Catalog=pubs;"
o 通過IP地址連接:
"Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
(DBMSSOCN=TCP/IP代替Named Pipes, Data Source的末尾是需要使用的埠號(預設為1433))
· SqlConnection (.NET)
o 標准連接(Standard Security):
"Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
或者
"Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;Trusted_Connection=False"
(這兩個連接串的結果相同)
o 信任連接(Trusted connection):
"Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
或者
"Server=Aron1;Database=pubs;Trusted_Connection=True;"
(這兩個連接串的結果相同)
(可以用serverName\instanceName代替Data Source,取值為一個具體的SQLServer實例,但僅適用於 SQLServer2000)
o 通過IP地址連接:
"Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
(DBMSSOCN=TCP/IP代替Named Pipes, Data Source的末尾是需要使用的埠號(預設為1433))
o SqlConnection連接的聲明:
C#:
using System.Data.SqlClient;
SqlConnection SQLConn = new SqlConnection();
SQLConn.ConnectionString="my connectionstring";
SQLConn.Open();
VB.NET:
Imports System.Data.SqlClient
Dim SQLConn As SqlConnection = New SqlConnection()
SQLConn.ConnectionString="my connectionstring"
SQLConn.Open()
· Data Shape
o MS Data Shape
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=Aron1;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
· 更多
o 如何定義使用哪個協議
§ 舉例:
"Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
名稱 網路協議庫
dbnmpntw Win32 Named Pipes
dbmssocn Win32 Winsock TCP/IP
dbmsspxn Win32 SPX/IPX
dbmsvinn Win32 Banyan Vines
dbmsrpcn Win32 Multi-Protocol (Windows RPC)
§ 重要提示
當通過SQLOLEDB提供者進行連接時使用以下語法:
Network Library=dbmssocn
但通過MSDASQL提供者進行連接時使用以下語法:
Network=dbmssocn
o 所有SqlConnection連接串屬性
§ 下表顯示了ADO.NET SqlConnection對象的所有連接串屬性. 其中大多數的屬性也在ADO中使用.所有屬性和描述來自於msdn.
名稱 預設值 描述
Application Name 應用程序名稱或者當沒有提供應用程序時為.Net SqlClient數據提供者
AttachDBFilename或者extended properties或者Initial File Name 主要文件的名字,包括相關聯資料庫的全路徑。資料庫名字必須通過關鍵字'database'來指定。
Connect Timeout或者Connection Timeout 15 在中止連接請求,產生錯誤之前等待伺服器連接的時間(以秒為單位)
Connection Lifetime 0 當一個連接返回到連接池,當前時間與連接創建時間的差值,如果時間段超過了指定的連接生存時間,此連接就被破壞。它用於聚集設置中在運行伺服器和准備上線的伺服器之間強制負載平衡。
Connection Reset 'true' 當連接從連接池移走時決定是否重置資料庫連接。當設置為'false'時用於避免獲得連接時的額外伺服器往復代價。
Current Language SQL Server語言記錄名稱
Data Source或Server或Address或Addr或Network Address 要連接的SQL Server實例的名字或者網路地址
Enlist 'true' 為真時,連接池自動列出創建線程的當前事務上下文中的連接。
Initial Catalog或Database 資料庫名
Integrated Security或者Trusted_Connection 'false' 連接是否為信任連接。其取值為'true', 'false'和'sspi'(等於'true').
Max Pool Size 100 連接池中允許的最大連接數
Min Pool Size 0 連接池中允許的最小連接數
Network Library或Net 'dbmssocn' 網路庫用於建立與一個 SQL Server實例的連接。值包括dbnmpntw (命名管道), dbmsrpcn (多協議), dbmsadsn (Apple Talk), dbmsgnet (VIA), dbmsipcn (共享內存) 和 dbmsspxn (IPX/SPX), 和 dbmssocn (TCP/IP). 所連接的系統必須安裝相應的動態鏈接庫。如果你沒有指定網路,當你使用一個局部的伺服器 (例如, "." 或者 "(local)"),將使用共享內存
Packet Size 8192 與 SQL Server的一個實例通訊的網路包位元組大小
Password-或Pwd SQL Server帳戶登錄口令
Persist Security Info 'false' 設置為'false',當連接已經打開或者一直處於打開狀態時,敏感性的安全信息 (如口令)不會返回作為連接的一部分信息。
Pooling 'true' 為真時,從合適的連接池中取出SQLConnection對象,或者必要時創建SQLConnection對象並把它增加到合適的連接池中。
User ID SQL Server登錄用戶
Workstation ID the local computer name 連接到SQL Server的工作站名稱
§ 注意:
使用分號分隔每個屬性
如果一個名字出現多於兩次,在連接串中的最後一次出現的值將被使用。
如果你通過在應用中由用戶輸入欄位的值來構建連接串,你必須保證用戶不會通過用戶值里的另一個值插入到一個額外的屬性來改變連接串。
Access
· ODBC
o 標准連接(Standard Security):
"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;"
o 組(系統資料庫)連接 (Workgroup):
兩種方法分別為:在連接串或在打開數據集中指定用戶名和口令
"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;","admin", ""
或
if(pDB.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;", "", "DatabaseUser", "DatabasePass"))
{DoSomething();
pDB.Close();
}
o 獨占方式(Exclusive):
"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Exclusive=1;Uid=admin;Pwd="
· OLE DB, OleDbConnection (.NET)
o 標准連接(Standard Security):
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"
o 組連接 (系統資料庫)
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:System Database=system.mdw;","admin", ""
o 帶口令的連接:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;","admin", ""
· Oracle
· ODBC
o 新版本:
"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
o 舊版本:
"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
· OLE DB, OleDbConnection (.NET)
o 標准連接(Standard Security):
"Provider=msra;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
這是Microsoft的格式, 下面是Oracle的格式(提供者不同)
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"
注意:"Data Source=" 必須根據相應的命名方法設置為Net8名稱。例如對於局部命名,它是tnsnames.ora中的別名,對於Oracle命名,它是Net8網路服務名
o 信任連接(Trusted Connection):
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"
或者設置user ID為 "/"
"Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=/;Password=;"
· OracleConnection (.NET)
o 標准連接:
"Data Source=Oracle8i;Integrated Security=yes";
這只對Oracle 8i release 3或更高版本有效
o OracleConnection聲明:
C#:
using System.Data.OracleClient;
OracleConnection OracleConn = new OracleConnection();
OracleConn.ConnectionString = "my connectionstring";
OracleConn.Open();
VB.NET:
Imports System.Data.OracleClient
Dim OracleConn As OracleConnection = New OracleConnection()
OracleConn.ConnectionString = "my connectionstring"
OracleConn.Open()
· Data Shape
o MS Data Shape:
"Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;user id=username;password=mypw"
· MySQL
· ODBC
③ 一個關於C#連接網路資料庫的問題
正常情況下只要客戶端設定好連接伺服器的字元串就行了
廣域網中也是一樣的,只不過需要網路更好才行,要能夠像訪問區域網那樣的速度才行
QQ也是如此,只不過它是通過域名找主機,而不是通過ip找主機
------
伺服器必須打開1433埠,其他機器才能夠訪問sql server服務
④ sql資料庫怎麼聯機
1、先保證ping通
2、在dos下寫入telnet ip 1433不會報錯
3、用ip連如企業管理器:
企業管理器--> 右鍵SQlserver組--> 新建sqlserver注冊--> 下一步--> 寫入遠程實例名(IP,機器名)--> 下一步--> 選Sqlserver登陸--> 下一步--> 寫入登陸名與密碼(sa,pass)--> 下一步--> 下一步--> 完成
4、如果還不行:
sqlserver伺服器--> 開始菜單--> SQLserver--> 伺服器網路實用工具--> 啟用 WinSock代理--> 代理地址:(sqlserver伺服器IP)--> 代理埠--> 1433--> OK了
5、如果還不行:
sqlserver客戶端--> 開始菜單--> SQLserver--> 客戶端網路實用工具--> 別名--> 添加--> 寫入別名如 "大力 "--> "網路庫 "選tcp/ip--> 伺服器名稱寫入遠程ip或實例名--> OK了
/**************************************
2. 使用 telnet 命令檢查SQL Server伺服器工作狀態
telnet <伺服器IP地址> 1433
如果命令執行成功,可以看到屏幕一閃之後游標在左上角不停閃動,這說明 SQL Server 伺服器工作正常,並且正在監聽1433埠的 TCP/IP 連接;如果命令返回"無法打開連接"的錯誤信息,則說明伺服器端沒有啟動 SQL Server 服務,也可能伺服器端沒啟用 TCP/IP 協議,或者伺服器端沒有在 SQL Server 默認的埠1433上監聽 ,或沒有允許遠程連接
1> 資料庫引擎沒有啟動。
有兩種啟動方式:
(1)開始->程序->Microsoft SQL Server 2005->SQL Server 2005外圍應用配置器,在打開的界面單擊"服務的連接的外圍應用配置器",在打開的界面中找到Database Engine,單擊"服務",在右側查看是否已啟動,如果沒有啟動可單擊"啟動",並確保"啟動類型"為自動,不要為手動,否則下次開機時又要手動啟動;
(2)可打開:開始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,選中SQL Server 2005服務中SQL Server(MSSQLSERVER) ,並單擊工具欄中的"啟動服務"按鈕把服務狀態改為啟動;
使用上面兩種方式時,有時候在啟動的時候可能會出現錯誤,不能啟動,這時就要查看"SQL Server 2005配置管理器"中的SQL Server 2005網路配置->MSSQLSERVER協議中的VIA是否已啟用,如果已啟用,則把它禁止.然後再執行上述一種方式操作就可以了.
2>是否已經允許遠程連接。
這個部分可以分為4個方面,分別是在 SQL Server上啟用遠程連接、啟用SQL Server 瀏覽服務、在Windows 防火牆中為SQL Server 2005 創建例外和在Windows 防火牆中為「SQLBrowser」創建例外。下面是幾個具體的操作方式,摘自MSDN,個人覺得文章的黑體部分應當特別的一起我們的注意。
在SQLServer 實例上啟用遠程連接
1.指向「開始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外圍應用配置器」
2.在「SQL Server 2005 外圍應用配置器」頁, 單擊「服務和連接的外圍應用配置器」
3.然後單擊展開「資料庫引擎」, 選中「遠程連接」,在右邊選中「本地連接和遠程連接」,
再選擇要使用的協議,( 這個地方應當啟用TCP/IP 和命名管道服務!)單擊「應用」,您會看到下消息:
「直到重新啟動資料庫引擎服務後,對連接設置所做的更改才會生效。」,單擊「確定」按鈕返回
4.展開「資料庫引擎」, 選中「服務」,在右邊單擊「停止」,等到 MSSQLSERVER 服務停止,
然後單擊「啟動」,重新啟動MSSQLSERVER 服務。
啟用 SQLServer 瀏覽器服務
1.指向「開始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外圍應用配置器」
2.在「SQL Server 2005 外圍應用配置器」頁, 單擊「服務和連接的外圍應用配置器」
3.然後單擊展開「SQL Server Browser」, 選中「服務」,在右邊「啟動類型」選擇「自動」,
再單擊「啟動」,單擊「確定」按鈕返回
在Windows 防火牆中為「SQL Server 2005」創建例外
1.在 Windows 防火牆設置界面中,選擇「 例外」 選項卡,然後單擊「添加程序」
2.在「添加程序窗口」中單擊「瀏覽」
3.然後找到「C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1 \MSSQL\Binn\sqlservr.exe」,
單擊「確定」返回
注意 : 路徑可能會根據 SQL Server 2005 安裝不同而不同。 MSSQL.1 是佔位符,對應資料庫實例ID。
4.對每個需要打開遠程訪問的SQL Server 2005 實例,重復步驟 1 至 3。
在Windows 防火牆中為「SQLBrowser」創建例外
1.在 Windows 防火牆設置界面中,選擇「 例外」 選項卡,然後單擊「添加程序」
2.在「添加程序窗口」中單擊「瀏覽」
3.然後找到「C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe」,
單擊「確定」返回
注意 : 路徑可能會根據 SQL Server 2005 安裝不同而不同
⑤ C語言怎麼做網路和資料庫編程
使用ODBC進行資料庫編程。
1、配置ODBC數據源
2、使用SQL函數進行連接。
⑥ Win7下使用mingw進行c語言編程,如何鏈接ws2_32.lib庫
gcc 在window下鏈接 libws2_32.a 文件 方法是
gcc 命令 加 -lws2_32 【小寫的L 】
⑦ C/S模式,C#如何遠程連接sql2008資料庫
一般C/S模式連接遠程資料庫是不會去直連的,而是通過一個中間系統去連接資料庫。比如說你舉的例子,客戶端在上海,資料庫在北京,那麼需要在北京架一台WebService伺服器(或在上海或其他城市也行,最好是在北京,與資料庫在同一個內網里,但只有WebService伺服器對外,而資料庫伺服器不對外),然後在WebService中實現增刪查改功能,再利用Client端去直接訪問這些WebService功能即可。
⑧ c/c++ 網路連接都用什麼庫
網路中的進程是通過socket來通信的.
socket起源於Unix,而Unix/Linux基本哲學之一就是「一切皆文件」,都可以用「打開open –> 讀寫write/read –> 關閉close」模式來操作。
我的理解就是Socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉)