ODBC编程

来源:互联网 发布:软件需求分析面试 编辑:程序博客网 时间:2024/06/07 17:44

ODBC 方式

以下是代码片段:
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:/MyExcel.xls;DefaultDir=c:/mypath;
 SQL语法 "SELECT * FROM [sheet1$]". Excel 工作表名跟一个"$"并且加一个中括号。 
OLE DB方式
标准格式
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"; 

注意 :在字符串中的引号"需要根据你使用的语言转义一些.举例如下
c#, c++   /"
VB6, VBScript   ""
xml (web.config etc)   "
或者用单引号’。
"HDR=Yes;" 这个参数说明第一行是列名,而不是数据. "HDR=No;"正好与前面的相反。 
"IMEX=1;" 告诉driver总是把数据作为text 类型.注意,这选项会影响excel的写访问(sheet write access negative)。
SQL语法 "SELECT * FROM [sheet1$]"。Excel 工作表名跟一个"$"并且加一个中括号。
检查注册表 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel] located registry REG_DWORD "TypeGuessRows". 此项将不会让excel仅读前8行去猜数据列的类型。把这项设为0,让excel检查所有行。这会影响性能。 
如果excel文件有密码,你将不能连接成功,即使提供了正确的密码。如果你试一下,你会发现提示“不能解密文件”
--------------access------------------
ODBC
标准连接
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;Uid=Admin;Pwd=;
工作组
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;SystemDB=C:/mydatabase.mdw;
独享(排他)连接
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;Exclusive=1;Uid=admin;Pwd=;
开启管理语句功能
要执行特别的语句如CREATE USER, CREATE GROUP, ADD USER, GRANT, REVOKE 和 DEFAULTS (当执行CREATE TABLE 语句时) 用下面的连接字符串。
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;Uid=Admin;Pwd=;ExtendedAnsiSQL=1;
具体的 locale identifier
使用locale identifier可以帮助识别非美语日期 
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;Locale Identifier=2057;Uid=Admin;Pwd=;
OLE DB, OleDbConnection (.NET)
标准连接
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/mydatabase.mdb;User Id=admin;Password=;
带数据库密码的连接
下面是一个带有密码保护的access 数据库. 
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/mydatabase.mdb;Jet OLEDB:Database Password=MyDbPassword;
工作组(system database)
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/mydatabase.mdb;Jet OLEDB:System Database=system.mdw;
带用户名与密码的工作组(system database) 
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;
DataDirectory functionality
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/myDatabase.mdb;User Id=admin;Password=;
-------------------sql server---------------
ODBC方式
标准安全链接语法:
Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
信任连接语法:
Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Trusted_Connection=Yes;
若提示用户名和密码,这里有一个小技巧.首先你要设置连接对象的Prompt 属性为adPromptAlways.然后用下面的连接字符串连接数据库. 以下是语法格式:
oConn.Properties("Prompt") = adPromptAlways
Driver={SQL Server};Server=myServerAddress;Database=myDataBase;
OLE DB, OleDbConnection (.NET)
标准安全链接语法:
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
信任连接语法:
Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
用服务器名/实例名来连接一个服务器实例,需要注意很多实例连接参数仅对2000版本有效,以前其他的版本是不可以用的.
连接到sql server实例. 以下是语法格式:
Provider=sqloledb;Data Source=myServerName/theInstanceName;Initial Catalog=myDataBase;Integrated Security=SSPI;
若提示用户名和密码,也需要一点小技巧.首先设置连接对象的Provider属性为sqloledb,接着设置连接对象的Prompt属性为adPromptAlways.最后用连接字符串连接数据库就可以啦.代码如下: 以下是示例代码:
oConn.Provider = "sqloledb"
oConn.Properties("Prompt") = adPromptAlways
Data Source=myServerAddress;Initial Catalog=myDataBase;
通过IP地址连接
Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
DBMSSOCN=TCP/IP.是告诉连接对象用ip连接而不是命名管道的方式.DataSource最后的那个1433端口是SQL server的默认端口(站长注:与sql server2005的不相同)
SqlConnection (.NET)
标准连接语法:
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
标准连接语法(另一种):
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
第二种连接字符串与前一个是效果相同的.之所以包含到这里是为了指出很多连接字符串的关键词有相同的效果.
信任连接语法:
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
信任连接的语法(另一种):
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
用服务器名/实例名来连接一个服务器实例,需要注意很多实例连接参数仅对2000版本有效,以前其他的版本是不可以用的. 连接到Sql Server实例:
Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=True;
CE设备的信任连接
通常一个windows CE设置是被验证过并且登陆到域中的,用SSPI或信任/验证过的连接连接数据库用下面的连接字符串: 以下是语法格式:
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain/myUsername;Password=myPassword;
注意:仅在CE设备上有效.
通过IP地址连接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
DBMSSOCN=TCP/IP.是告诉连接对象用ip连接而不是命名管道的方式.DataSource最后的那个1433端口是SQL server的默认端口(站长注:与sql server2005的不相同)
特殊的包大小
以下是语法格式:
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;Packet Size=4096;
默认的,微软的.net框架中的SQL Server数据库Provider 设置的默认网络包的大小为8192字节,这可能不是最优的设置 ,你可以试着设置为4096字节.
8192字节可能引发" Failed to reserve contiguous  memory" 错误.
Data Shape
以下是语法格式:
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;