c获取数据库数据
Console.WriteLine("成功连接到数据库!"); Console.WriteLine("data sourc:{0}",conn.DataSource); Console.WriteLine("database name:{0}",conn.Database); Console.WriteLine("client name:{0}",conn.WorkstationId); SqlCommand cmd=new SqlCommand("select CategoryID,CategoryName from Categories",conn); SqlDataReader dr=cmd.ExecuteReader(); while(dr.Read()){Console.WriteLine("\t{0}\t{1}",dr.GetInt32(0),dr.GetString(1));}dr.Close(); conn.Close();}catch(Exception e){Console.WriteLine("无法连接到数据库!"); DataReader的意思就是数据阅读器,它是以类似于指针的形式读取数据库里面的记录,具有效率高的特点。使用Read()方法可以将满足查询的记录依次读取出来,类似于指针的Next()方法。使用while循环可以读取到全部记录,读取到最后一条记录时退出循环。返回的值为Object类型,可以进行转换以得到需要的数据。 示例:while(reader.Read()){string name = reader["name"].ToString(); // name为查询语句中的name列}注意使用datareader必须及时关闭,否则会与数据库建立长连接,消耗数据库的连接数。关闭连接使用Close()方法或使用Using方法让系统帮你自动释放。 具体可参考MSDN SqlDataReader.Read()方法。
❷ c语言关于从数据库读取数据写文件
#include<stdio.h>
execsqlincludesqlca;
intmain(){
execsqlbegindeclaresection;
charuserpasswd[30]="openlab/123456";
struct{
intid;
charname[30];
doublesalary;
}emp;
execsqlenddeclaresection;
execsqlconnect:userpasswd;
selectid,first_name,salaryfrom
s_emporderbysalary;
execsqlopenempcursor;
;
for(;;){
execsqlfetchempcursorinto:emp;
printf("%d:%s:%lf ",emp.id,emp.name,
emp.salary);
}
execsqlcloseempcursor;
execsqlcommitworkrelease;
}
把数据存到结构体里。
❸ 在c语言中,如何提取一个txt数据库文件中的信息
简单的用C读取文件的例子代码片段。
... ...
FILE *fp;
char buffer[1000];
fp=fopen( "input.txt", "r" );
while ( fread(&buffer, sizeof(buffer), 1, fp )==1)
{
... ...
//对从文件读出来的数据在此处进行处理
... ...
}
fclose(fp);
... ...
❹ 如何用C语言取数据
//其中的in.txt就是你要读取数据的文件,当然把它和程序放在同一目录
-------------------------------------
#include
<stdio.h>
int
main()
{
int
data;
FILE
*fp=fopen("in.txt","r");
if(!fp)
{
printf("can't
open
file\n");
return
-1;
}
while(!feof(fp))
{
fscanf(fp,"%d",&data);
printf("%4d",data);
}
printf("\n");
fclose(fp);
return
0;
}
2
猴岛ID
饭叔为你解答
望采纳
❺ uo_tool_c获取数据库参数出错没有配置应用服务器地址
摘要 亲,您的这个问题我已经帮您找到答案亲,问题的原因:此问题属于sql server的bug, GetComputerName 用于获取本地计算机名。客户端网络库组件 (DBMSLPCn.dll) 将该名称转换为全部大写。服务器网络库组件 (SSMSLPCn.dll) 保留返回时的名称。当 Windows 计算机名称包含大写字母和小写字母或者都是小写字母时安装会失败,提示一般性网络错误!解决办法就是将计算机名称改为全部大写
❻ 如何用c语言提取excel中的数据
1.方法一:采用OleDB读取EXCEL文件:
把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:
publicDataSetExcelToDS(stringPath)
{
stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties=Excel8.0;";
OleDbConnectionconn=newOleDbConnection(strConn);
conn.Open();
stringstrExcel="";
OleDbDataAdaptermyCommand=null;
DataSetds=null;
strExcel="select*from[sheet1$]";
myCommand=newOleDbDataAdapter(strExcel,strConn);
ds=newDataSet();
myCommand.Fill(ds,"table1");
returnds;
}
对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到
stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties=Excel8.0;";
OleDbConnectionconn=newOleDbConnection(strConn);
DataTableschemaTable=objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
stringtableName=schemaTable.Rows[0][2].ToString().Trim();
另外:也可进行写入EXCEL文件,实例如下:
publicvoidDSToExcel(stringPath,DataSetoldds)
{
//先得到汇总EXCEL的DataSet主要目的是获得EXCEL在DataSet中的结构
stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+path1+";ExtendedProperties=Excel8.0";
OleDbConnectionmyConn=newOleDbConnection(strCon);
stringstrCom="select*from[Sheet1$]";
myConn.Open();
OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);
ystem.Data.OleDb.OleDbCommandBuilderbuilder=newOleDbCommandBuilder(myCommand);
//QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。
builder.QuotePrefix="[";//获取insert语句中保留字符(起始位置)
builder.QuoteSuffix="]";//获取insert语句中保留字符(结束位置)
DataSetnewds=newDataSet();
myCommand.Fill(newds,"Table1");
for(inti=0;i<oldds.Tables[0].Rows.Count;i++)
{
在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的
DataRowState!=Added
DataRownrow=aDataSet.Tables["Table1"].NewRow();
for(intj=0;j<newds.Tables[0].Columns.Count;j++)
{
nrow[j]=oldds.Tables[0].Rows[i][j];
}
newds.Tables["Table1"].Rows.Add(nrow);
}
myCommand.Update(newds,"Table1");
myConn.Close();
}
2.方法二:引用的com组件:Microsoft.Office.Interop.Excel.dll读取EXCEL文件
首先是Excel.dll的获取,将Office安装目录下的Excel.exe文件Copy到DotNet的bin目录下,cmd到该目录下,运行TlbImpEXCEL.EXEExcel.dll得到Dll文件。再在项目中添加引用该dll文件.
//读取EXCEL的方法(用范围区域读取数据)
privatevoidOpenExcel(stringstrFileName)
{
objectmissing=System.Reflection.Missing.Value;
Applicationexcel=newApplication();//lauchexcelapplication
if(excel==null)
{
Response.Write("<script>alert('Can'taccessexcel')</script>");
}
else
{
excel.Visible=false;excel.UserControl=true;
//以只读的形式打开EXCEL文件
Workbookwb=excel.Application.Workbooks.Open(strFileName,missing,true,missing,missing,missing,
missing,missing,missing,true,missing,missing,missing,missing,missing);
//取得第一个工作薄
Worksheetws=(Worksheet)wb.Worksheets.get_Item(1);
//取得总记录行数(包括标题列)
introwsint=ws.UsedRange.Cells.Rows.Count;//得到行数
//intcolumnsint=mySheet.UsedRange.Cells.Columns.Count;//得到列数
//取得数据范围区域(不包括标题列)
Rangerng1=ws.Cells.get_Range("B2","B"+rowsint);//item
Rangerng2=ws.Cells.get_Range("K2","K"+rowsint);//Customer
object[,]arryItem=(object[,])rng1.Value2;//getrange'svalue
object[,]arryCus=(object[,])rng2.Value2;
//将新值赋给一个数组
string[,]arry=newstring[rowsint-1,2];
for(inti=1;i<=rowsint-1;i++)
{
//Item_Code列
arry[i-1,0]=arryItem[i,1].ToString();
//Customer_Name列
arry[i-1,1]=arryCus[i,1].ToString();
}
Response.Write(arry[0,0]+"/"+arry[0,1]+"#"+arry[rowsint-2,0]+"/"+arry[rowsint-2,1]);
}
excel.Quit();excel=null;
Process[]procs=Process.GetProcessesByName("excel");
foreach(Processproinprocs)
{
pro.Kill();//没有更好的方法,只有杀掉进程
}
GC.Collect();
}
3.方法三:将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。
先引用命名空间:usingSystem.Text;和usingSystem.IO;
FileStreamfs=newFileStream("d:\Customer.csv",FileMode.Open,FileAccess.Read,FileShare.None);
StreamReadersr=newStreamReader(fs,System.Text.Encoding.GetEncoding(936));
stringstr="";
strings=Console.ReadLine();
while(str!=null)
{str=sr.ReadLine();
string[]xu=newString[2];
xu=str.Split(',');
stringser=xu[0];
stringdse=xu[1];if(ser==s)
{Console.WriteLine(dse);break;
}
}sr.Close();
另外也可以将数据库数据导入到一个txt文件,实例如下:
//txt文件名
stringfn=DateTime.Now.ToString("yyyyMMddHHmmss")+"-"+"PO014"+".txt";
OleDbConnectioncon=newOleDbConnection(conStr);
con.Open();
stringsql="selectITEM,REQD_DATE,QTY,PUR_FLG,PO_NUMfromTSD_PO014";
//OleDbCommandmycom=newOleDbCommand("select*fromTSD_PO014",mycon);
//OleDbDataReadermyreader=mycom.ExecuteReader();//也可以用Reader读取数据
DataSetds=newDataSet();
OleDbDataAdapteroda=newOleDbDataAdapter(sql,con);
oda.Fill(ds,"PO014");
DataTabledt=ds.Tables[0];
FileStreamfs=newFileStream(Server.MapPath("download/"+fn),FileMode.Create,FileAccess.ReadWrite);
StreamWriterstrmWriter=newStreamWriter(fs);//存入到文本文件中
//把标题写入.txt文件中
//for(inti=0;i<dt.Columns.Count;i++)
//{
//strmWriter.Write(dt.Columns[i].ColumnName+"");
//}
foreach(DataRowdrindt.Rows)
{
stringstr0,str1,str2,str3;
stringstr="|";//数据用"|"分隔开
str0=dr[0].ToString();
str1=dr[1].ToString();
str2=dr[2].ToString();
str3=dr[3].ToString();
str4=dr[4].ToString().Trim();
strmWriter.Write(str0);
strmWriter.Write(str);
strmWriter.Write(str1);
strmWriter.Write(str);
strmWriter.Write(str2);
strmWriter.Write(str);
strmWriter.Write(str3);
strmWriter.WriteLine();//换行
}
strmWriter.Flush();
strmWriter.Close();
if(con.State==ConnectionState.Open)
{
con.Close();
}
❼ 关于c语言如何读取数据
你要读哪3位?
连着一起的3位,还是独立的3位
连一起: (val&(0x07<<n))>>n
0-2: (val&0x07)>>0
1-3: (val&0x0e)>>1
2-4: (val&0x1c)>>2
3-5: (val&0x38)>>3
4-6: (val&0x70)>>4
5-7L (val&0xe0)>>5
单独第n位:
(val&(0x1<<n))>>n
❽ C #里的request如何获取数据库中表中的记录
首先需要说明,在C#中REQUST有两种.
1. 位于System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.NET中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等.
所以一般将System.Web.HttpReques中的Request通常都简称为request,即:"请求",有"请求"就有"响应(response)".
在实际开发中,最常见的使用方法就是在ASP.NET中利用request对像用于获取FORM中各种控种的值,或者用于接收URL传参时的值.无法用来获取数据库或虚拟表中的记录.
注:FORM中各种控件的值可以是用户输入,或者从数据库中取出来的数据绑定.
例如:
Request.Params["string型参数名"],Request.QueryString["string型参数名"]用于获取URL传参时某个参数的值.
Request.Form["控件名称"]用于获取服务端控件FORM中的各种控件的值.
2.位于System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的,譬如你可以在代码中用这个类冒充浏览器(设置一个UserAgent)来发请求,处理回应
这里的Rquest通常用于请求获取服务端的各种文件数据流,例如在程序中点里某个按扭将服务器上的某个地址的文件下载到本地硬盘.这个request在使用时由先创建一个对像实例.
例如:
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("下载地址,比如说某个网址") 首先创建REQUEST对像,
request.GetResponse().GetResponseStream()创建完成后就可以通过它来获取流中的数据了,然后将获取的数据交给System.IO.Stream的实例对像,就可以对需要下载的数据流进行处理了.
同样,它也有一个与之相匹配的RESPONSE响应对像.这里就不再说明了...
这种问概念性的问题记着多看看书就能找到明确的答案.
以后不要再问这么没水平的问题了.会闹出笑话的...
至于System.Web.HttpRequest与System.Net.HttpWebRequest具体的区别,以后从书上给抄了一段内容:
HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
不要使用 HttpWebRequest 构造函数。使用 WebRequest.Create 方法初始化新的 HttpWebRequest 对象。如果统一资源标识符 (URI) 的方案是 http:// 或 https://,则 WebRequest.Create 返回 HttpWebRequest 对象。
可以使用 BeginGetResponse 和 EndGetResponse 方法对资源发出异步请求。BeginGetRequestStream 和 EndGetRequestStream 方法提供对发送数据流的异步访问。
如果在访问资源时发生错误,则 HttpWebRequest 类将引发 WebException。WebException.Status 属性包含指示错误源的 WebExceptionStatus 值。
HttpWebRequest 将发送到 Internet 资源的公共 HTTP 标头值公开为属性,由方法或系统设置;下表包含完整列表。可以将 Headers 属性中的其他标头设置为名称/值对。注意,服务器和缓存在请求期间可能会更改或添加标头。
下表列出了由属性或方法设置或由系统设置的 HTTP 标头。
System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.NET中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等
而System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的,譬如你可以在代码中用这个类冒充浏览器(设置一个UserAgent)来发请求,处理回应
第一:他们不是父子关系。
第二:Syste.Net.HttpWebRequest类是System.Net.WebRequest抽象类的一个子类,它是.NET Framework的用于访问Internet数据的请求/响应模型的抽象基类。使用该请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据。在这种方式下,应用程序处理 WebRequest类的实例,而协议特定的子类则执行请求的具体细节。
System.Net.HttpWebRequest类和System.Net.FileWebRequest都继承了WebRequest
1、FileWebRequest类为使用file:// 方案来请求本地文件的URI实现WebRequest抽象基类。
2、HttpWebRequest类对WebRequest中定义的属性和方法提供支持,也对使用户能够直接与使用HTTP的服务器交互的附加属性和方法提供支持。
第三:System.Web.HttpRequest类使ASP.NET能够读取客户端在Web 请求期间发送的 HTTP值,HttpRequest类的方法和属性通过HttpApplication、HttpContext、Page 和 UserControl类的Request属性公开。
所以使用System.Web.HttpRequest类的时候其实都是利用HttpApplication、HttpContext、Page和UserControl类的Request属性。而使用System.Net.HttpWebRequest类时是为了获得一个Uri资源。自己创建。
System.Web 命名空间提供使得可以进行浏览器与服务器通信的类和接口。此命名空间包括 HttpRequest 类(用于提供有关当前 HTTP 请求的广泛信息)、HttpResponse 类(用于管理对客户端的 HTTP 输出)以及 HttpServerUtility 类(用于提供对服务器端实用工具与进程的访问)。System.Web 还包括用于 Cookie 操作、文件传输、异常信息和输出缓存控制的类。
System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。WebRequest 和 WebResponse 类形成了所谓的可插接式协议的基础,可插接式协议是网络服务的一种实现,它使您能够开发出使用 Internet 资源的应用程序,而不必考虑各种不同协议的具体细节。
❾ 求教如何在 c/c++中读取数据库中表的数据!!!!!!!!!
int CountLines(char *filename) { ifstream ReadFile; int n=0; char line[512]; ReadFile.open(filename,ios::in);//ios::in 表示以只读的方式读取文件 if(ReadFile.fail())//文件打开失败:返回0 { return 0; } else//文件存在 { while(!ReadFile.eof()) { ReadFile.getline(line,512,'\n'); n++; } return n; }
❿ C++ 获得数据库中的数据
1.提取单条记录
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb";
//_bstr_t varSource="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
_ConnectionPtr m_pConnection(_uuidof(Connection));
m_pConnection->Open(varSource,"","",adModeUnknow);
_RecordsetPtr m_pSet(_uuid(Recordset));
try {
m_pSet->Open(%%1,m_pConnection.GetInterfacePtr()
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error *e){
{
AfxMessageBox(e->ErrorMessage());
return;
}
_variant_t var;
CString %%2="";
long fldc=m_pSet->GetFields()->GetCount();
long i=0;
try {
m_pSet->MoveFirst();
if(!m_pSet->adoEOF)
{
for(i=0;i<fldc;i++)
{
var=m_pSet->GetCollect((long)i);
var.ChangeType(VT_BSTR);
%%2+=var.bstrVal;
%%2+=" ";
}
//m_pSet->MoveNext();
}
}
catch(_com_error *e){
AfxMessageBox(e->ErrorMessage());
delete e;
}
//m_pSet->MoveFirst();
CoUninitialize(NULL);
3.显示表格
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb";
//_bstr_t varSource="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
_ConnectionPtr m_pConnection(_uuidof(Connection));
m_pConnection->Open(varSource,"","",adModeUnknow);
//打开属性为默认(adModeRead(只读),adModeWrite(可写),adModeReadWrite(可读写)等)
_RecordsetPtr m_pSet(_uuid(Recordset));
try {
HRESULT hr=m_pSet->Open(%%1,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error *e){
AfxMessageBox(e->ErrorMessage());
}
if(SUCCESSED(hr))
{
//表打开成功
}
FieldsPtr p_fields=m_pSet->Fields;
FieldPtr p_field;
_variant_t var_index;
LPCSTR field_name;
int index=0;
_bstr_t bstr_field_name;
int countfields=p_fields->GetCount();
CString *Column=new CString[countfields];
CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1);//IDC_LIST_TABLEDATA
VERIFY(pList);
pList->DeleteAllItems();
for(index=0;index<countfields;index++)
{
var_index.vt=VT_I4;
var_index.IVal=index;
p_field=p_fields->Item[var_index];
bstr_field_name=p_field->GetName();
field_name=(LPCSTR)bstr_field_name;
Column[index]=field_name;
int ColumnWidth=Column[index].GetLength()*15;
pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth);
}
int i=0;
_bstr_t vCol;
//pList->SetTextBkColor(RGB(122,200,122));
//pList->SetTextColor(RGB(0,0,200));
while(!m_pSet->adoEOF)
{
pList->Insert(i,atoi(i));
for(int j=0;j<countfields;j++)
{
vCol=m_pSet->GetCollect((long)j);
pList->SetItemText(i,j,vCol);
}
m_pSet->MoveNext();
i++;
}
CoUninitialize(NULL);
4.操作表格
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb";
//_bstr_t varSource="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
_ConnectionPtr m_pConnection(_uuidof(Connection));
m_pConnection->Open(varSource,"","",adModeUnknow);
//打开属性为默认(adModeRead(只读),adModeWrite(可写),adModeReadWrite(可读写)等)
_RecordsetPtr m_pSet(_uuid(Recordset));
try {
HRESULT hr=m_pSet->Open(%%1,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error *e){
AfxMessageBox(e->ErrorMessage());
}
if(SUCCESSED(hr))
{
//表打开成功
}
FieldsPtr p_fields=m_pSet->Fields;
FieldPtr p_field;
_variant_t var_index;
LPCSTR field_name;
int index=0;
_bstr_t bstr_field_name;
int countfields=p_fields->GetCount();
CString *Column=new CString[countfields];
CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1);//IDC_LIST_TABLEDATA
VERIFY(pList);
pList->DeleteAllItems();
for(index=0;index<countfields;index++)
{
var_index.vt=VT_I4;
var_index.IVal=index;
p_field=p_fields->Item[var_index];
bstr_field_name=p_field->GetName();
field_name=(LPCSTR)bstr_field_name;
Column[index]=field_name;
int ColumnWidth=Column[index].GetLength()*15;
pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth);
}
int i=0;
_bstr_t vCol;
//pList->SetTextBkColor(RGB(122,200,122));
//pList->SetTextColor(RGB(0,0,200));
while(!m_pSet->adoEOF)
{
pList->Insert(i,atoi(i));
for(int j=0;j<countfields;j++)
{
vCol=m_pSet->GetCollect((long)j);
pList->SetItemText(i,j,vCol);
}
m_pSet->MoveNext();
i++;
}
CoUninitialize(NULL);
5.数值范围查询
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
try
{
//创建连接对象实例
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\
uid=;pwd=;DBQ=shujuku.mdb;";
//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
try {
int min = %%1;
int max = %%2;
CString sql;
sql.Format("select count(*) as pro_count from ProPrice where price between %d and %d",min,max);
HRESULT hr=m_pSet->Open(sql,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error *e){
AfxMessageBox(e->ErrorMessage());
}
if(SUCCESSED(hr))
{
//表打开成功
}
FieldsPtr p_fields=m_pSet->Fields;
FieldPtr p_field;
_variant_t var_index;
LPCSTR field_name;
int index=0;
_bstr_t bstr_field_name;
int countfields=p_fields->GetCount();
CString *Column=new CString[countfields];
CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1);//IDC_LIST_TABLEDATA
VERIFY(pList);
pList->DeleteAllItems();
for(index=0;index<countfields;index++)
{
var_index.vt=VT_I4;
var_index.IVal=index;
p_field=p_fields->Item[var_index];
bstr_field_name=p_field->GetName();
field_name=(LPCSTR)bstr_field_name;
Column[index]=field_name;
int ColumnWidth=Column[index].GetLength()*15;
pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth);
}