1、確定目標Sqlserver是否允許遠程訪問
創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網技術服務公司,擁有項目成都網站制作、成都網站設計、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新干做網站,已為上家服務,為新干各地企業(yè)和個人服務,聯(lián)系電話:13518219792
2、確定目標SqlServer服務端口是否是默認端口
3、檢查數據庫名稱、密碼什么是否正確
數據
create?table?test(col1?varchar(1),
col2?varchar(1))
insert?into?test?values?('A','a')
insert?into?test?values?('A','d')
insert?into?test?values?('B','e')
insert?into?test?values?('A','j')
insert?into?test?values?('A','r')
insert?into?test?values?('B','g')
insert?into?test?values?('B','h')
insert?into?test?values?('B','t')
執(zhí)行
select?col1,?[col2]=stuff((select?','+[col2]?from?test?t?where?col1=test.col1?for?xml?path('')),?1,?1,?'')??from?test??group?by?col1
結果
相應的表名和字段名你替換一下吧
粗略的看了一下,應該是SQLConnenct參數傳遞有問題吧。每個字符串后面跟的不是字符串的長度,而是表示字符串形式的宏定義,如SQL_NTS,表示NULL terminated string,就是以NULL結尾的字符串。你把里面的strlen都換成SQL_NTS試試。
如果你用的是SQL2008以后的數據庫版本,可以這樣
SELECT
ROW_NUMBER()
OVER
(ORDER
BY
B.HID
DESC)
BH,
B.*
FROM
(SELECT
h.[醫(yī)院名稱],k.[科室名稱],k.[科室編號],k.id,k.kid
from
[醫(yī)院表]
as
h
right
join
[科室表]
as
k
on
k.hid
=
h.hid
)
B
WHERE
BH
BETWEEN
($page_size
*
$page_num)
AND
($page_size
*
$page_num
+$page_size)
select a.name as tabname
,h.name as idname
from sys.objects as a
right join sys.indexes as h on a.object_id=h.object_id
where a.type's'
go
由于索引和系統(tǒng)列沒有直接對應關系 所以不能直接查看列字段和字段長度
我給你個解析的代碼吧~具體存數據庫得根據實際情況來
#include "StdAfx.h"
#include "parse.h"
#include string
#include "stdafx.h"
#include libxml/parser.h
#include libxml/tree.h
#include iostream
#include libxml/xpath.h
#include libxml/xpathInternals.h
#include stdio.h
#include stdlib.h
#includewindows.h
using namespace std;
parse::parse()
//int parse::parsexml()
{
xmlDocPtr doc; //定義解析文檔指針
xmlNodePtr curNode; //定義結點指針(你需要它為了在各個結點間移動)
xmlChar *szKey; //臨時字符串變量
char *szDocName;
doc = xmlReadFile("SimACQ_Config.xml","GB2312",XML_PARSE_RECOVER); //解析文件
//檢查解析文檔是否成功,如果不成功,libxml將指一個注冊的錯誤并停止。
if (NULL==doc)
{
fprintf(stderr,"Document not parsed successfully. /n");
/*return -1;*/
}
curNode = xmlDocGetRootElement(doc); //確定文檔根元素
/*檢查確認當前文檔中包含內容*/
if (NULL == curNode)
{
fprintf(stderr,"empty document/n");
xmlFreeDoc(doc);
/*return -1;*/
}
/*在這個例子中,我們需要確認文檔是正確的類型?!皉oot”是在這個示例中使用文檔的根類型。*/
if (xmlStrcmp(curNode-name, BAD_CAST "SIMCONFIG"))
{
fprintf(stderr,"document of the wrong type, root node != mail");
xmlFreeDoc(doc);
/*return -1; */
}
curNode = curNode-xmlChildrenNode;
xmlNodePtr propNodePtr = curNode;
while(curNode != NULL)
{
//取出節(jié)點中的內容
if ((!xmlStrcmp(curNode-name, (const xmlChar *)"ComConfig")))
{
xmlNodePtr comConfigPtr= curNode-children;
while(comConfigPtr!=NULL)
{
if((!xmlStrcmp(comConfigPtr-name,(const xmlChar *)"DMS")))
{
xmlChar* szAttr = xmlGetProp(comConfigPtr,BAD_CAST "IP");
IP=(char*)szAttr;
szAttr=xmlGetProp(comConfigPtr,BAD_CAST "PORT");
PORT=atoi((const char *)szAttr);
szAttr=xmlGetProp(comConfigPtr,BAD_CAST "TIMEOUT");
TIMEOUT=atoi((const char *)szAttr);
xmlFree(szAttr);
}
comConfigPtr=comConfigPtr-next;
}
}
if ((!xmlStrcmp(curNode-name, (const xmlChar *)"Log")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Flag");
if(szAttr!=NULL)
{
if((!xmlStrcmp(szAttr,(const xmlChar *)"True")))
{
FLAG=true;
}
else
{
FLAG=false;
}
}
szAttr = xmlGetProp(curNode,BAD_CAST "Path");
if(szAttr!=NULL)
{
PATH=(char*)szAttr;
}
xmlFree(szAttr);
}
if ((!xmlStrcmp(curNode-name, (const xmlChar *)"DMS")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Cache");
if(szAttr!=NULL)
{
Cache=atoi((const char *)szAttr);
}
xmlFree(szAttr);
}
if ((!xmlStrcmp(curNode-name, (const xmlChar *)"SimFile")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Type");
if(szAttr!=NULL)
{
if((!xmlStrcmp(szAttr,(const xmlChar *)"PlainFilm")))
{
xmlNodePtr FileNodes=curNode-children;
int i=0;
while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes-name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");
if(szAttr!=NULL)
{
/*SIM_PLAIN[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_PLAIN[i].Name,(char*)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulation.SIM_PLAIN[i].Num=atoi((char*)szAttr);
}
i++;
}
FileNodes=FileNodes-next;
}
xmlFree(FileNodes);
simulation.SIM_PLAIN[i].flag=0;
}
if((!xmlStrcmp(szAttr,(const xmlChar *)"Spiral"))){
xmlNodePtr FileNodes=curNode-children;
int i=0;
while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes-name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");
if(szAttr!=NULL)
{
/*SIM_SPIRAL[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_SPIRAL[i].Name,(char*)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulation.SIM_SPIRAL[i].Num=atoi((char*)szAttr);
}
i++;
}
FileNodes=FileNodes-next;
}
xmlFree(FileNodes);
simulation.SIM_SPIRAL[i].flag=0;
}
if((!xmlStrcmp(szAttr,(const xmlChar *)"axial")))
{
xmlNodePtr FileNodes=curNode-children;
int i=0;
while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes-name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");
if(szAttr!=NULL)
{
/* SIM_AXIAL[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_AXIAL[i].Name,(char*)szAttr);
}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");
if(szAttr!=NULL)
{
simulation.SIM_AXIAL[i].Num=atoi((char*)szAttr);
}
i++;
}
FileNodes=FileNodes-next;
}
xmlFree(FileNodes);
simulation.SIM_AXIAL[i].flag=0;
}
}
xmlFree(szAttr);
}
curNode = curNode-next;
}
xmlFreeDoc(doc);
/*return 0;*/
}
有什么不明白的再問吧!