當前位置:首頁 » 編程語言 » c連接sql

c連接sql

發布時間: 2023-06-05 03:17:44

⑴ c#怎麼和sql資料庫連接

1、打開Visual Studio 2008工具,點擊文件菜單,選擇新建下面的項目選項,如下圖所示。

⑵ C/S模式,C#如何遠程連接sql2008資料庫

在資料庫連接字元串中使用外網的網址即可
//通過IP地址連接,必需確保SQL伺服器開啟1433埠和檢查SQL網路連接啟用TCP/IP協議
string serverInfo = string.Format("Data Source={0},1433;Network Library=DBMSSOCN;Initial Catalog=", serverIP);
string pwd = ";User ID=xxx;PWD=xxx";
string connString = string.Format("{0}{1}{2}", serverInfo, "資料庫名稱", pwd);

⑶ c怎麼連接sql server資料庫

1.准備工作: 准備相關的軟體(Eclipse除外,開源軟體可以從官網下載) <1>.Microsoft SQL server 2005 Express Edition 下載地址:http://download.microsoft.com/download/0/9/0/09020fab-d2c3-4a8c-b9e0-db53a7a30ae8/SQLEXPR_CHS.EXE <2>.SQL Server Management Studio 下載地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796#filelist <3>.SQL Server 2005 driver for JDBC 下載地址:http://download.microsoft.com/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF3690EF/sqljdbc_1.2.2323.101_enu.exe 2.JDBC連接SQL Server的驅動安裝 ,前兩個是屬於資料庫軟體,正常安裝即可(注意資料庫登陸不要使用windows驗證) 是用java連接嗎? 如果是,方法如下: <1> 將JDBC解壓縮到任意位置,比如解壓到C盤program files下面,並在安裝目錄里找到sqljdbc.jar文件,得到其路徑開始配置環境變數 在環境變數classpath 後面追加 C:\Program Files\Microsoft SQL Server2005 JDBC Driver\sqljdbc_1.2\enu\sqljdbc.jar <2> 設置SQLEXPRESS伺服器: a.打開SQL Server Configuration Manager -> SQLEXPRESS的協議 -> TCP/IP b.右鍵單擊啟動TCP/IP c.雙擊進入屬性,把IP地址中的IP all中的TCP埠設置為1433 d.重新啟動SQL Server 2005服務中的SQLEXPRESS伺服器 e.關閉SQL Server Configuration Manager <3> 打開剛剛安裝好的 SQL Server Management Studio,連接SQLEXPRESS伺服器, 新建資料庫,起名字為sample <4> 打開Eclipse a.新建工程-> Java -> Java project,起名為Test b.選擇eclipse->窗口->首選項->Java->installed JRE 編輯已經安裝好的jdk,查找目錄添加sqljdbc.jar c.右鍵單擊目錄窗口中的Test, 選擇Build Path ->Configure Build Path..., 添加擴展jar文件,即把sqljdbc.jar添加到其中 <5> 編寫Java代碼來測試JDBC連接SQL Server資料庫

⑷ 用vc++連接到sql server資料庫

(1).在文件stdafx.h中最後一個#endif的前一行寫入
#import
"C:\program
files\common
files\System\ado\msado15.dll"
no_namespace
\
rename("EOF","EndOfFile")
\
rename("LockTypeEnum","newLockTypeEnum")
\
rename("DataTypeEnum","newDataTypeEnum")
\
rename("FieldAttributeEnum","newFieldAttributeEnum")
\
rename("EditModeEnum","newEditModeEnum")
\
rename("RecordStatusEnum","newRecordStatusEnum")
\
rename("ParameterDirectionEnum","newParameterDirectionEnum")
如果你的系統不是安裝在C盤的話就把#import
後面的C改成系統所有的盤
--------------------------------------------------------------------------
(2).在C***App類的public:下加入
_RecordsetPtr
m_pADOSet;
bool
ADOExecute(_RecordsetPtr
&ADOSet,
_variant_t
&strSQL);
在private:下加入
private:
_ConnectionPtr
ADOConn;
--------------------------------------------------------------------------
在class
C***App
:
public
CWinApp
{
...
};之後#endif之前加入
extern
CxxxApp
theApp;
--------------------------------------------------------------------------
(3)在BOOL
C***App::InitInstance()函數中Enable3dControls();
//
Call
this
when
linking
to
MFC
statically這一行下面加入
if(
FAILED(::CoInitialize(NULL))
)
{
AfxMessageBox("ADO
Init
failed");
return
false;
}
try
{
ADOConn.CreateInstance(__uuidof(Connection));
ADOConn->Open("DSN=OBDC數據源;Provider=MSDASQL","用戶","密碼",
adConnectUnspecified);//這一行要自已修改
}
catch(_com_error
&e)
{
CString
err;
err.Format("%s",
(char*)(e.Description())
);
AfxMessageBox(err);
}
catch(...)
{
AfxMessageBox("Unknown
Error...");
}
m_pADOSet.CreateInstance(__uuidof(Recordset));
-------------------------------------------------------------------------
並在文件最後加上如下代碼:
bool
CxxxApp::ADOExecute(_RecordsetPtr
&ADOSet,
_variant_t
&strSQL)
{
if
(
ADOSet->State
==
adStateOpen)
ADOSet->Close();
try
{
ADOSet->Open(strSQL,
ADOConn.GetInterfacePtr(),
adOpenStatic,
adLockOptimistic,
adCmdUnknown);
return
true;
}
catch(_com_error
&e)
{
CString
err;
err.Format("ADO
Error:
%s",(char*)e.Description());
AfxMessageBox(err);
return
false;
}
}
------------------------------------------------------------------------
最後就可以在登錄時執行SQL語句了,比如用戶為CString
strUser,
密碼是CString
strPwd;資料庫表是user_table(user_id,
user_name,
user_pwd)則
_variant_t
sqlQuery
;
sqlQuery
=
"select
*
from
user_table
where
user_name='"+strUser
+"'
and
user_pwd='"+
strPwd
+"'";
theApp.ADOExecute(theApp.m_pADOSet,
sqlQuery
);
int
iCount
=
theApp.m_pADOSet->GetRecordCount();
if
(
0==iCount
)
{
AfxMessageBox(_T("密碼錯誤"),
MB_ICONEXCLAMATION);
return;
}
else
{
AfxMessageBox(_T("登錄成功"),
MB_ICONEXCLAMATION);
不知道能否幫到你,參考下把

⑸ c/c++怎麼連接資料庫,並執行SQL語句

C++連接SQL資料庫第一步 系統配置
1.設置SQLSERVER伺服器為SQL登錄方式,並且系統安全性中的sa用戶要設置登錄功能為「啟用」,還有必須要有密碼。
2.需要在ODBC中進行數據源配置,數據源選\」SQL SERVER」,登錄方式使用「使用輸入用戶登錄ID和密碼的SQL SERVER驗證」,並填寫登錄名(sa)和密碼,注意一點,密碼不能為空,這就意味著你的sa用戶必須得有密碼。否則無法通過系統本身的安全策略。測試通過就完成了配置。
C++連接SQL資料庫第二步 C++與SQL連接初始化
1.在你所建立的C++項目中的stdafx.h頭文件中引入ADO
具體代碼如下
#import 「c:\Program Files\Common Files\System\ado\msado15.dll」
no_namespace rename(」EOF」, 「adoEOF」) rename(」BOF」, 「adoBOF」)
2.定義_ConnectionPtr變數後調用Connection對象的Open方法建立與伺服器的連接。
數據類型_ConnectionPtr實際上是由類模板_com_ptr_t得到的一個具體的實例類。_ConnectionPtr類封裝了Connection對象的Idispatch介面指針及其一些必要的操作。可以通過這個指針操縱Connection對象。
例如連接SQLServer資料庫,代碼如下:
//連接到MS SQL Server
//初始化指針
_ConnectionPtr pMyConnect = NULL;
HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
return;
//初始化鏈接參數
_bstr_t strConnect = 「Provider=SQLOLEDB;
Server=hch;
Database=mytest;
uid=sa; pwd=sa;」; //Database指你系統中的資料庫
//執行連接
try
{
// Open方法連接字串必須四BSTR或者_bstr_t類型
pMyConnect->Open(strConnect, 「」, 「」, NULL);
}
catch(_com_error &e)
{
MessageBox(e.Description(), 「警告」, MB_OK|MB_ICONINFORMATION);
}//發生鏈接錯誤

C++連接SQL資料庫第三步 簡單的數據連接
//定義_RecordsetPtr變數,調用它Recordset對象的Open,即可打開一個數據集
//初始化過程 以下是個實例
_RecordsetPtr pRecordset;
if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))
{
return;
}
//執行操作
try
{
pRecordset->Open(_variant_t(」userinfo」),
_variant_t((IDispatch*)pMyConnect),
adOpenKeyset, adLockOptimistic, adCmdTable);
}
catch (_com_error &e)
{
MessageBox(」無法打開userinfo表\」, 「系統提示」,
MB_OK|MB_ICONINFORMATION);
}

C++連接SQL資料庫第四步 執行SQL語句
這里是關鍵,我認為只要你懂點SQL語句那麼一切都會方便許多比用上面的方法簡單,更有效率點。
首先
m_pConnection.CreateInstance(_uuidof(Connection));
//初始化Connection指針
m_pRecordset.CreateInstance(__uuidof(Recordset));
//初始化Recordset指針
CString strSql=」select * from tb_goods」;//具體執行的SQL語句
m_pRecordset=m_pConnection->Execute(_bstr_t(strSql),
NULL, adCmdText);//將查詢數據導入m_pRecordset數據容器
至此 你的SQL語句已經執行完成了m_pRecordset內的數據就是你執行的結果。
取得記錄:
while(!m_pRecordset->adoEOF)//遍歷並讀取name列的記錄並輸出
{
CString temp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem
(」name」)->Value;
AfxMessageBox(temp);
pRecordset->MoveNext();
}

插入記錄
//記得初始化指針再執行以下操作
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)

⑹ 如何用C++連接SQL資料庫

(樓上兩位說的很對,我給你粘一篇文章吧 初學者 看看有好處。
需要的話 你可以留下郵箱 我這有一些初學者的文檔可以發給你很不錯,希望繼續努力。面試,到時候一切都是是浮雲。。。哈哈)

基本流程
萬事開頭難,任何一種新技術對於初學者來說最重要的還是「入門」,掌握其要點。讓我們來看看ADO資料庫開發的基本流程吧!
(1)初始化COM庫,引入ADO庫定義文件
(2)用Connection對象連接資料庫
(3)利用建立好的連接,通過Connection、Command對象執行SQL命令,或利用Recordset對象取得結果記錄集進行查詢、處理。
(4)使用完畢後關閉連接釋放對象。

准備工作:
為了大家都能測試本文提供的例子,我們採用Access資料庫,您也可以直接在我們提供的示例代碼中找到這個test.mdb。
下面我們將詳細介紹上述步驟並給出相關代碼。
【1】COM庫的初始化
我們可以使用AfxOleInit()來初始化COM庫,這項工作通常在CWinApp::InitInstance()的重載函數中完成,請看如下代碼:

BOOL CADOTest1App::InitInstance()
{
AfxOleInit();
......

【2】用#import指令引入ADO類型庫
我們在stdafx.h中加入如下語句:(stdafx.h這個文件哪裡可以找到?你可以在FileView中的Header Files里找到)

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
這一語句有何作用呢?其最終作用同我們熟悉的#include類似,編譯的時候系統會為我們生成msado15.tlh,ado15.tli兩個C++頭文件來定義ADO庫。

幾點說明:
(1) 您的環境中msado15.dll不一定在這個目錄下,請按實際情況修改
(2) 在編譯的時候肯能會出現如下警告,對此微軟在MSDN中作了說明,並建議我們不要理會這個警告。
msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

【3】創建Connection對象並連接資料庫
首先我們需要添加一個指向Connection對象的指針:
_ConnectionPtr m_pConnection;
下面的代碼演示了如何創建Connection對象實例及如何連接資料庫並進行異常捕捉。

BOOL CADOTest1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///創建Connection對象
if(SUCCEEDED(hr))
{
hr = m_pConnection- >Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///連接資料庫
///上面一句中連接字串中的Provider是針對ACCESS2000環境的,對於ACCESS97,需要改為:Provider=Microsoft.Jet.OLEDB.3.51;
}
}
catch(_com_error e)///捕捉異常
{
CString errormessage;
errormessage.Format("連接資料庫失敗!\r\n錯誤信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///顯示錯誤信息
}

在這段代碼中我們是通過Connection對象的Open方法來進行連接資料庫的,下面是該方法的原型
HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options )
ConnectionString為連接字串,UserID是用戶名, Password是登陸密碼,Options是連接選項,用於指定Connection對象對數據的更新許可權,
Options可以是如下幾個常量:
adModeUnknown:預設。當前的許可權未設置
adModeRead:只讀
adModeWrite:只寫
adModeReadWrite:可以讀寫
adModeShareDenyRead:阻止其它Connection對象以讀許可權打開連接
adModeShareDenyWrite:阻止其它Connection對象以寫許可權打開連接
adModeShareExclusive:阻止其它Connection對象以讀寫許可權打開連接
adModeShareDenyNone:阻止其它Connection對象以任何許可權打開連接

我們給出一些常用的連接方式供大家參考:
(1)通過JET資料庫引擎對ACCESS2000資料庫的連接

m_pConnection- >Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb","","",adModeUnknown);

(2)通過DSN數據源對任何支持ODBC的資料庫進行連接:

m_pConnection- >Open("Data Source=adotest;UID=sa;PWD=;","","",adModeUnknown);

(3)不通過DSN對SQL SERVER資料庫進行連接:
m_pConnection- >Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);

其中Server是SQL伺服器的名稱,DATABASE是庫的名稱

Connection對象除Open方法外還有許多方法,我們先介紹Connection對象中兩個有用的屬性ConnectionTimeOut與State
ConnectionTimeOut用來設置連接的超時時間,需要在Open之前調用,例如:
m_pConnection- >ConnectionTimeout = 5;///設置超時時間為5秒
m_pConnection- >Open("Data Source=adotest;","","",adModeUnknown);

State屬性指明當前Connection對象的狀態,0表示關閉,1表示已經打開,我們可以通過讀取這個屬性來作相應的處理,例如:

if(m_pConnection- >State)
m_pConnection- >Close(); ///如果已經打開了連接則關閉它

------------------------------------------------------------------------------------
呵呵,是啊,我以前不做VC的,所以這次老闆有個項目要做,沒辦法啊!!以後多請教啊!!
------------------------------------------------------------------------------------
你現在不少基礎的不會,上來就連接資料庫有點難
------------------------------------------------------------------------------------
要是你用vc6,就右健點擊要添加變數的控制項,選擇classwizard,選擇member variables選項卡,它會自動指到你想要添加變數的控制項,你直接點選擇add variable,起個名字就可以了
------------------------------------------------------------------------------------
我關鍵是不知道怎麼給控制項添加與之相對應的變數!!請明示啊!!
------------------------------------------------------------------------------------
CBaseEditBox是什麼東西?你不要這樣定義。應該先把控制項放在對話框窗體上,再給這個控制項添加與之相對應的變數,這樣,VC就自動把控制項和變數聯系起來了
------------------------------------------------------------------------------------
剛弄,不怎麼會,請明示!!!

我想把從資料庫中讀出來的記錄放在一個文本框中!

然後在界面上放置了一個edit box

我在類C***Dlg中添加了變數
public:
CBaseEditBox m_list

接下來我在一個按鈕的onOK事件里連接資料庫並想把得到的記錄放到m_list里

// 讀入庫中各欄位並加入列表框中
while(!m_pRecordset- >adoEOF)
{
var = m_pRecordset- >GetCollect("UserName");
if(var.vt != VT_NULL)
strName = (LPCSTR)_bstr_t(var);
var = m_pRecordset- >GetCollect("Password");
if(var.vt != VT_NULL)
strAge = (LPCSTR)_bstr_t(var);

m_list.AddString( strName + " -- > "+strAge );

m_pRecordset- >MoveNext();
}

// 默認列表指向第一項,同時移動記錄指針並顯示
m_list.SetCurSel(0);

然後一大堆錯誤:
d:\microsoft visual studio\myprojects\testado\testadodlg.h(18) : error C2146: syntax error : missing "; " before identifier "m_list "
d:\microsoft visual studio\myprojects\testado\testadodlg.h(18) : error C2501: "CBaseEditBox " : missing storage-class or type specifiers
d:\microsoft visual studio\myprojects\testado\testadodlg.h(18) : error C2501: "m_list " : missing storage-class or type specifiers
TestADODlg.cpp
d:\microsoft visual studio\myprojects\testado\testadodlg.h(18) : error C2146: syntax error : missing "; " before identifier "m_list "
d:\microsoft visual studio\myprojects\testado\testadodlg.h(18) : error C2501: "CBaseEditBox " : missing storage-class or type specifiers
d:\microsoft visual studio\myprojects\testado\testadodlg.h(18) : error C2501: "m_list " : missing storage-class or type specifiers
D:\Microsoft Visual Studio\MyProjects\TestADO\TestADODlg.cpp(195) : error C2065: "m_list " : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\TestADO\TestADODlg.cpp(195) : error C2228: left of ".AddString " must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\TestADO\TestADODlg.cpp(201) : error C2228: left of ".SetCurSel " must have class/struct/union type
Generating Code...
Error executing cl.exe.

請問什麼原因那?

------------------------------------------------------------------------------------
http://www.vckbase.com/document/viewdoc/?id=496

把文章中連接Access的語句換成:
連接SQL資料庫:
m_pConnection- >Open("Provider=SQLOLEDB.1;Server=192.168.1.6;DATABASE=mysql;UID=sa;PWD=;","","",adModeUnknown);

其中Server是SQL伺服器的名稱,DATABASE是庫的名稱

⑺ 用c語言怎樣連接sql資料庫

SQL 有API的,包含頭文件和連接使用相應的.lib就可以

~
~
~

⑻ c語言怎樣連接資料庫(c語言和資料庫連接)

1、配置ODBC數據源。

2、使用SQL函數進行連接。

對於1、配置數據源,配置完以後就可以編程操作資料庫了。

對於2、使用SQL函數進行連接,參考代碼如下:

#include

#include

#include

voidmain()

{

HENVhenv;//環境句柄

HDBChdbc;//數據源句柄

HSTMThstmt;//執行語句句柄

unsignedchardatasource[]="數據源名稱";//即源中設置的源名稱

unsignedcharuser[]="用戶名";//數襲此據庫的帳戶拍野迅名

unsignedcharpwd[]="密碼";//資料庫的密碼

unsignedcharsearch[]="selectxmfromstuwherexh=0";

SQLRETURNretcode;//記錄各SQL函數的返回情況

//分配環境句柄

retcode=SQLAllocEnv(&henv);//等介於(SQL_HANDLE_ENV,SQL_NULL

,&henv);

//設置ODBC環境版本號為3.0

retcode=(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);

//分配連接句柄

retcode=(henv,&hdbc);//等介於(SQL_HANDLE_DBC,henv,&hdbc);

//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)

//(hdbc,SQL_LOGIN_TIMEOUT,(SQLPOINTER)(rgbValue),0);

//直接連接數據源

//如果是windows身份驗證,第二、三參數可以是

,也可以是任何字串

//SQL_NTS即"

retcode=SQLConnect(hdbc,datasource,SQL_NTS,user,SQL_NTS,pwd,SQL_NTS);

//分配語句句柄

retcode=(hdbc,&hstmt);//等介於(SQL_HANDLE_STMT,hdbc,&hstmt);

//直接執行查詢語句

retcode=(hstmt,search,SQL_NTS);

//將數據緩沖區綁定資料庫中的相應脊塵欄位(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)

SQLBindCol(hstmt,i,SQL_C_CHAR,queryData[i-1],BUFF_LENGTH,0);

//遍歷結果集到相應緩沖區queryData

SQLFetch(hstmt);

/*

*對遍歷結果的相關操作,如顯示等

*/

//注意釋放順序,否則會造成未知錯誤!

(SQL_HANDLE_STMT,hstmt);

(hdbc);

(SQL_HANDLE_DBC,hdbc);

(SQL_HANDLE_ENV,henv);

}

⑼ c如何與sql資料庫連接

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:

C或者以C++與SQL應該如何連接,謝謝!

解析:

用odbc或db-libary給你一小段db-library程序

int CreateProc(PDBPROCESS * dbproc,char * pwd,char * sname)

{

PLOGINREC login;

char sname[20];

unsigned short num;

memset(sname,0,sizeof(sname));

login=dblogin();

DBSETLUSER(login,"sa");

if(strlen(pwd)>0)

{

DBSETLPWD(login,pwd);

}

DBSETLVERSION(login, DBVER60);

dbprocerrhandle(login,err_handler);

dbprocmsghandle(login,msg_handler);

dbserverenum(LOC_SEARCH,sname,sizeof(sname),&num);

DBSETLTIME(login,20);

*dbproc=dbopen(login,sname);

if(*dbproc == NULL){

return ERR;

}

dbuse(*dbproc,"ccenter");

dbfreelogin(login);

return OK;

}

int check_grp_no(int grp_no, unsigned int * *** all_len)

{

int res=0;

int t=0;

dbcancel(dbproc);

dbfcmd(dbproc," select *** all_len from grp_table where grp_no=%d",grp_no);

res=dbsqlexec(dbproc);

if((res=dbresults(dbproc))==SUCCEED){

dbbind(dbproc,1,INTBIND,0,(unsigned char *) *** all_len);

while(dbnextrow(dbproc)!=NO_MORE_ROWS){

t++;

return OK;

}

}

return ERR;

}

熱點內容
我配置很高了ae為什麼卡 發布:2025-05-17 14:54:50 瀏覽:167
python數據分析實戰pdf 發布:2025-05-17 14:49:42 瀏覽:950
海瀾之家廣告腳本 發布:2025-05-17 13:56:06 瀏覽:30
手文件夾恢復 發布:2025-05-17 13:53:32 瀏覽:993
linux怎麼看進程 發布:2025-05-17 13:53:30 瀏覽:303
thinkphp欄位緩存 發布:2025-05-17 13:52:01 瀏覽:575
山靈app安卓版如何設置 發布:2025-05-17 13:51:49 瀏覽:388
帆布壓縮袋 發布:2025-05-17 13:26:27 瀏覽:457
c語言16進製表示方法 發布:2025-05-17 13:11:25 瀏覽:480
ftp單位 發布:2025-05-17 13:10:03 瀏覽:142