c#连接SQL数据库2007-11-3016:06usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingModel;
usingSystem.Data;
usingSystem.Data.SqlClient;
1.返回一个结果集
publicstaticDataSetGetDataSet2(stringsql)
{
DataSetds=newDataSet();
stringstrConn="server=.;uid=sa;pwd=;database=ShopManegerDB";
SqlConnectionconn=newSqlConnection(strConn);
SqlDataAdapterda=newSqlDataAdapter(sql,conn);
da.Fill(ds,"Shop");
returnds;
}
2.返回一个影响的行数
publicstaticintupdate(stringsql)
{
stringstrConn="server=.;uid=sa;pwd=;database=ShopManegerDB";
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand(sql,conn);
conn.Open();
inti=cmd.ExecuteNonQuery();
conn.Close();
returni;
}
3.其他
SqlServer
·ODBC
o标准连接(StandardSecurity):
"Driver={SQLServer};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;"
1)当服务器为本地时Server可以使用(local);
"Driver={SQLServer};Server=(local);Database=pubs;Uid=sa;Pwd=asdasd;"
2)当连接远程服务器时,需指定地址、端口号和网络库
"Driver={SQLServer};Server=130.120.110.001;Address=130.120.110.001,1052;Network=dbmssocn;Database=pubs;Uid=sa;Pwd=asdasd;"
注:Address参数必须为IP地址,而且必须包括端口号
o信任连接(Trustedconnection):(MicrosoftWindowsNT集成了安全性)
"Driver={SQLServer};Server=Aron1;Database=pubs;Trusted_Connection=yes;"
或者
"Driver={SQLServer};Server=Aron1;Database=pubs;Uid=;Pwd=;"
o连接时弹出输入用户名和口令对话框:
Conn.Properties("Prompt")=adPromptAlways
Conn.Open"Driver={SQLServer};Server=Aron1;DataBase=pubs;"
·OLEDB,OleDbConnection(.NET)
o标准连接(StandardSecurity):
"Provider=sqloledb;DataSource=Aron1;InitialCatalog=pubs;UserId=sa;Password=asdasd;"
o信任连接(Trustedconnection):
"Provider=sqloledb;DataSource=Aron1;InitialCatalog=pubs;IntegratedSecurity=SSPI;"
(如果连接一个具体的已命名SQLServer实例,使用DataSource=ServereName\InstanceName;但仅适用于SQLServer2000)例如:”Provider=sqloledb;DataSource=MyServerName\MyInstanceName;InitialCatalog=MyDatabaseName;UserId=MyUsername;Password=MyPassword;”
o连接时弹出输入用户名和口令对话框:
Conn.Provider="sqloledb"
Conn.Properties("Prompt")=adPromptAlways
Conn.Open"DataSource=Aron1;InitialCatalog=pubs;"
o通过IP地址连接:
"Provider=sqloledb;DataSource=190.190.200.100,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=pubs;UserID=sa;Password=asdasd;"
(DBMSSOCN=TCP/IP代替NamedPipes,DataSource的末尾是需要使用的端口号(缺省为1433))
·SqlConnection(.NET)
o标准连接(StandardSecurity):
"DataSource=Aron1;InitialCatalog=pubs;UserId=sa;Password=asdasd;"
或者
"Server=Aron1;Database=pubs;UserID=sa;Password=asdasd;Trusted_Connection=False"
(这两个连接串的结果相同)
o信任连接(Trustedconnection):
"DataSource=Aron1;InitialCatalog=pubs;IntegratedSecurity=SSPI;"
或者
"Server=Aron1;Database=pubs;Trusted_Connection=True;"
(这两个连接串的结果相同)
(可以用serverName\instanceName代替DataSource,取值为一个具体的SQLServer实例,但仅适用于SQLServer2000)
o通过IP地址连接:
"DataSource=190.190.200.100,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=pubs;UserID=sa;Password=asdasd;"
(DBMSSOCN=TCP/IP代替NamedPipes,DataSource的末尾是需要使用的端口号(缺省为1433))
oSqlConnection连接的声明:
C#:
usingSystem.Data.SqlClient;
SqlConnectionSQLConn=newSqlConnection();
SQLConn.ConnectionString="myconnectionstring";
SQLConn.Open();
VB.NET:
ImportsSystem.Data.SqlClient
DimSQLConnAsSqlConnection=NewSqlConnection()
SQLConn.ConnectionString="myconnectionstring"
SQLConn.Open()
·DataShape
oMSDataShape
"Provider=MSDataShape;DataProvider=SQLOLEDB;DataSource=Aron1;InitialCatalog=pubs;UserID=sa;Password=asdasd;"
·更多
o如何定义使用哪个协议
§举例:
"Provider=sqloledb;DataSource=190.190.200.100,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=pubs;UserID=sa;Password=asdasd;"
名称网络协议库
dbnmpntwWin32NamedPipes
dbmssocnWin32WinsockTCP/IP
dbmsspxnWin32SPX/IPX
dbmsvinnWin32BanyanVines
dbmsrpcnWin32Multi-Protocol(WindowsRPC)
§重要提示
当通过SQLOLEDB提供者进行连接时使用以下语法:
NetworkLibrary=dbmssocn
但通过MSDASQL提供者进行连接时使用以下语法:
Network=dbmssocn
o所有SqlConnection连接串属性
§下表显示了ADO.NETSqlConnection对象的所有连接串属性.其中大多数的属性也在ADO中使用.所有属性和描述来自于msdn.
名称缺省值描述
ApplicationName应用程序名称或者当没有提供应用程序时为.NetSqlClient数据提供者
AttachDBFilename或者extendedproperties或者InitialFileName主要文件的名字,包括相关联数据库的全路径。数据库名字必须通过关键字'database'来指定。
ConnectTimeout或者ConnectionTimeout15在中止连接请求,产生错误之前等待服务器连接的时间(以秒为单位)
ConnectionLifetime0当一个连接返回到连接池,当前时间与连接创建时间的差值,如果时间段超过了指定的连接生存时间,此连接就被破坏。它用于聚集设置中在运行服务器和准备上线的服务器之间强制负载平衡。
ConnectionReset'true'当连接从连接池移走时决定是否重置数据库连接。当设置为'false'时用于避免获得连接时的额外服务器往复代价。
CurrentLanguageSQLServer语言记录名称
DataSource或Server或Address或Addr或NetworkAddress要连接的SQLServer实例的名字或者网络地址
Enlist'true'为真时,连接池自动列出创建线程的当前事务上下文中的连接。
InitialCatalog或Database数据库名
IntegratedSecurity或者Trusted_Connection'false'连接是否为信任连接。其取值为'true','false'和'sspi'(等于'true').
MaxPoolSize100连接池中允许的最大连接数
MinPoolSize0连接池中允许的最小连接数
NetworkLibrary或Net'dbmssocn'网络库用于建立与一个SQLServer实例的连接。值包括dbnmpntw(命名管道),dbmsrpcn(多协议),dbmsadsn(AppleTalk),dbmsgnet(VIA),dbmsipcn(共享内存)和dbmsspxn(IPX/SPX),和dbmssocn(TCP/IP).所连接的系统必须安装相应的动态链接库。如果你没有指定网络,当你使用一个局部的服务器(例如,"."或者"(local)"),将使用共享内存
PacketSize8192与SQLServer的一个实例通讯的网络包字节大小
Password-或PwdSQLServer帐户登录口令
PersistSecurityInfo'false'设置为'false',当连接已经打开或者一直处于打开状态时,敏感性的安全信息(如口令)不会返回作为连接的一部分信息。
Pooling'true'为真时,从合适的连接池中取出SQLConnection对象,或者必要时创建SQLConnection对象并把它增加到合适的连接池中。
UserIDSQLServer登录用户
WorkstationIDthelocalcomputername连接到SQLServer的工作站名称
§注意:
使用分号分隔每个属性
如果一个名字出现多于两次,在连接串中的最后一次出现的值将被使用。
如果你通过在应用中由用户输入字段的值来构建连接串,你必须保证用户不会通过用户值里的另一个值插入到一个额外的属性来改变连接串。
Access
·ODBC
o标准连接(StandardSecurity):
"Driver={MicrosoftAccessDriver(*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;"
o组(系统数据库)连接(Workgroup):
两种方法分别为:在连接串或在打开数据集中指定用户名和口令
"Driver={MicrosoftAccessDriver(*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;","admin",""
或
if(pDB.Open("Driver={MicrosoftAccessDriver(*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;","","DatabaseUser","DatabasePass"))
{DoSomething();
pDB.Close();
}
o独占方式(Exclusive):
"Driver={MicrosoftAccessDriver(*.mdb)};Dbq=C:\mydatabase.mdb;Exclusive=1;Uid=admin;Pwd="
·OLEDB,OleDbConnection(.NET)
o标准连接(StandardSecurity):
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\somepath\mydb.mdb;UserId=admin;Password=;"
o组连接(系统数据库)
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\somepath\mydb.mdb;JetOLEDB:SystemDatabase=system.mdw;","admin",""
o带口令的连接:
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\somepath\mydb.mdb;JetOLEDB:DatabasePassword=MyDbPassword;","admin",""
·Oracle
·ODBC
o新版本:
"Driver={MicrosoftODBCforOracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
o旧版本:
"Driver={MicrosoftODBCDriverforOracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
·OLEDB,OleDbConnection(.NET)
o标准连接(StandardSecurity):
"Provider=msdaora;DataSource=MyOracleDB;UserId=UserName;Password=asdasd;"
这是Microsoft的格式,下面是Oracle的格式(提供者不同)
"Provider=OraOLEDB.Oracle;DataSource=MyOracleDB;UserId=Username;Password=asdasd;"
注意:"DataSource="必须根据相应的命名方法设置为Net8名称。例如对于局部命名,它是tnsnames.ora中的别名,对于Oracle命名,它是Net8网络服务名
o信任连接(TrustedConnection):
"Provider=OraOLEDB.Oracle;DataSource=MyOracleDB;OSAuthent=1;"
或者设置userID为"/"
"Provider=OraOLEDB.Oracle;DataSource=MyOracleDB;UserId=/;Password=;"
·OracleConnection(.NET)
o标准连接:
"DataSource=Oracle8i;IntegratedSecurity=yes";
这只对Oracle8irelease3或更高版本有效
oOracleConnection声明:
C#:
usingSystem.Data.OracleClient;
OracleConnectionOracleConn=newOracleConnection();
OracleConn.ConnectionString="myconnectionstring";
OracleConn.Open();
VB.NET:
ImportsSystem.Data.OracleClient
DimOracleConnAsOracleConnection=NewOracleConnection()
OracleConn.ConnectionString="myconnectionstring"
OracleConn.Open()
·DataShape
oMSDataShape:
"Provider=MSDataShape.1;PersistSecurityInfo=False;DataProvider=MSDAORA;DataSource=orac;userid=username;password=mypw"
·MySQL
·ODBC
o本地数据库:
"Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;"
Sever参数也可以使用localhost作为其值
o远程数据库:
"Driver={mySQL};Server=data.domain;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"
Option值取值的含义
1客户端不能处理MyODBC返回一列真实宽度的情况
2客户端不能处理MySQL返回影响的行的真实值的情况如果设置此标志,MySQL返回’foundrows’。MySQL3.21.14或更新版才能生效
4在c:\myodbc.log中生成一个调试日志。这与在`AUTOEXEC.BAT'中的设置MYSQL_DEBUG=d:t:O,c::\myodbc.log相同
8对于结果和参数不设置任何包限制
16不使驱动器弹出问题
32使用或去除动态游标支持。这在MyODBC2.50中是不允许的
64在'database.table.column'中忽略数据库名字的使用
128强制使用ODBC管理器游标
256去除扩展取值(fetch)的使用
512充满char字段满长度
1024SQLDescribeCol()函数返回完全满足条件的列名
2048使用压缩的服务器/客户端协议
4096告诉服务器在函数后和'('前忽略空格(PowerBuilder需要)。这将产生所有函数名关键词
8192使用命名管道连接运行在NT上的Mysqld服务器
16384将LONGLONG列改为INTl列(有些应用不能处理LONGLONG列)
32768从SQLTables中返回’user’作为Table_qualifier和Table_owner
66536从客户端读参数,从`myf'读ODBC群
131072增加一些额外的安全性检查
如果你需要许多选项,你应该把以上标志相加。
·OLEDB,OleDbConnection(.NET)
o标准连接:
"Provider=MySQLProv;DataSource=mydb;UserId=UserName;Password=asdasd;"
DataSource是MySQL数据库的名字,也可以使用server=localhost;DB=test
·MySqlConnection(.NET)
oeInfoDesigns.dbProvider:
"DataSource=server;Database=mydb;UserID=username;Password=pwd;CommandLogging=false"
只适用于eInfoDesignsdbProvider,附加到.NET
oMySqlConnection的声明:
C#:
usingeInfoDesigns.dbProvider.MySqlClient;
MySqlConnectionMySqlConn=newMySqlConnection();
MySqlConn.ConnectionString="myconnectionstring";
MySqlConn.Open();
VB.NET:
ImportseInfoDesigns.dbProvider.MySqlClient
DimMySqlConnAsMySqlConnection=NewMySqlConnection()
MySqlConn.ConnectionString="myconnectionstring"
MySqlConn.Open()
·Interbase
·ODBC,Easysoft
o本地计算机:
"Driver={EasysoftIB6ODBC};Server=localhost;Database=localhost:C:\mydatabase.gdb;Uid=username;Pwd=password"
o远程计算机:
"Driver={EasysoftIB6ODBC};Server=ComputerName;Database=ComputerName:C:\mydatabase.gdb;Uid=username;Pwd=password"
·ODBC,Intersolv
o本地计算机:
"Driver={INTERSOLVInterBaseODBCDriver(*.gdb)};Server=localhost;Database=localhost:C:\mydatabase.gdb;Uid=username;Pwd=password"
o远程计算机:
"Driver={INTERSOLVInterBaseODBCDriver(*.gdb)};Server=ComputerName;Database=ComputerName:C:\mydatabase.gdb;Uid=username;Pwd=password"
这个驱动器现在由DataDirectTechnologies来提供(以前由Intersolv提供)
·OLEDB,SIBPROvider
o标准连接:
"provider=sibprovider;location=localhost:;datasource=c:\databases\gdbs\mygdb.gdb;userid=SYSDBA;password=masterkey"
o指定字符集:
"provider=sibprovider;location=localhost:;datasource=c:\databases\gdbs\mygdb.gdb;userid=SYSDBA;password=masterkey;characterset=ISO8859_1"
o指定角色:
"provider=sibprovider;location=localhost:;datasource=c:\databases\gdbs\mygdb.gdb;userid=SYSDBA;password=masterkey;role=DIGITADORES"
·需要了解更多请链接到Interbase的如下Borland开发者网络文章community.borland/article/0,1410,27152,00.html
·IBMDB2
·OLEDB,OleDbConnection(.NET)fromms
oTCP/IP:
"Provider=DB2OLEDB;NetworkTransportLibrary=TCPIP;NetworkAddress=XXX.XXX.XXX.XXX;InitialCatalog=MyCtlg;PackageCollection=MyPkgCol;DefaultSchema=Schema;UserID=MyUser;Password=MyPW"
oAPPC:
"Provider=DB2OLEDB;APPCLocalLUAlias=MyAlias;APPCRemoteLUAlias=MyRemote;InitialCatalog=MyCtlg;PackageCollection=MyPkgCol;DefaultSchema=Schema;UserID=MyUser;Password=MyPW"
AS400
·ODBC
"Driver={ClientAccessODBCDriver(32-bit)};System=myAS400;Uid=myUsername;Pwd=myPassword"
·OLEDB,OleDbConnection(.NET)
"Provider=IBMDA400;Datasource=myAS400;UserId=myUsername;Password=myPassword;"
·Sybase
·ODBC
oSybaseSystem12(或12.5)EnterpriseOpenClient标准连接:
"Driver={SYBASEASEODBCDriver};Srvr=Aron1;Uid=username;Pwd=password"
oSybaseSystem11标准连接:
"Driver={SYBASESYSTEM11};Srvr=Aron1;Uid=username;Pwd=password;"
oIntersolv3.10:
"Driver={INTERSOLV3.1032-BITSybase};Srvr=Aron1;Uid=username;Pwd=password;"
oSybaseSQLAnywhere(以前为WatcomSQLODBCdriver):
"ODBC;Driver=SybaseSQLAnywhere5.0;DefaultDir=c:\dbfolder\;Dbf=c:\mydatabase.db;Uid=username;Pwd=password;Dsn="""""
注意:对于在末尾紧跟着DSN参数被引用的双引号(VB语法),你必须改变符合你所使用的语言所指定的引用符号语法。DSN参数为空实际上非常重要,如果不包括的话将导致7778错误。
·OLEDB
oAdaptiveServerAnywhere(ASA):
"Provider=ASAProv;Datasource=myASA"
oAdaptiveServerEnterprise(ASE)(带数据源为.IDS文件):
"Provider=SybaseASEOLEDBProvider;Datasource=myASE"
注意你必须使用数据管理器来创建一个数据源.IDS文件.这些.IDS文件类似于ODBCDSNs.
VisualFoxPro(dBASE)
·ODBC
odBASE:
"Driver={MicrosoftdBASEDriver(*.dbf)};DriverID=277;Dbq=c:\\DatabasePath"
注意在书写sql语句时必须指定文件名(如“SelectName,AddressFromClients.dbf”).
oVisualFoxpro(有数据库容器):
"Driver={MicrosoftVisualFoxproDriver};UID=;SourceType=DBC;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No"
oVisualFoxpro(无数据库容器):
"Driver={MicrosoftVisualFoxproDriver};UID=;SourceType=DBF;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No"
·OLEDB,OleDbConnection(.NET)
o标准连接:
"Provider=vfpoledb;DataSource=C:\\DatabasePath\\MyDatabase.dbc;"
Excel
·ODBC
o标准连接(StandardSecurity):
"Driver={MicrosoftExcelDriver(*.xls)};DriverId=790;Dbq=C:\\DatabasePath\\DBSpreadSheet.xls;DefaultDir=c:\\databasepath;"
·OLEDBProviderforMicrosoftJet
o标准连接(StandardSecurity):
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\\DatabasePath\\DBSpreadSheet.xls;ExtendedProperties=\"\"Excel8.0;HDR=Yes;\"\";"
注意:如果"HDR=Yes",那么提供者不会在记录集中包括选择的第一行,如果,那么提供者将在记录集中包括单元范围(或已经命名范围)的第一行
Text
·ODBC
o标准连接(StandardSecurity):
"Driver={MicrosoftTextDriver(*.txt;*.csv)};Dbq=C:\\DatabasePath\\;Extensions=asc,csv,tab,txt;"
如果文本文件使用tab作为分隔符,你必须创建schema.ini文件,你必须在连接串中使用Format=TabDelimited选项。
注意:你必须在sql语句中指定文件名(例如"SelectName,AddressFromClients.csv")
·OLEDBProviderforMicrosoftJet
o标准连接(StandardSecurity):
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\\DatabasePath\\;ExtendedProperties=\"\"text;"HDR=Yes;FMT=Delimited;\"\";"
注意在书写sql语句时必须指定文件名(如“SelectName,AddressFromClients.txt”).
ODBCDSN
"DSN=MyDSN;Uid=MyUsername;Pwd=MyPassword;"
OLEDBProviderforODBCDatabases
连接Access:
"Provider=MSDASQL;Driver={MicrosoftAccessDriver(*.mdb)};Dbq=c:\\DatabasePath\\MyDatabase.mdb;Uid=MyUsername;Pwd=MyPassword;"
连接SQLServer:
"Provider=MSDASQL;Driver={SQLServer};Server=MyServerName;Database=MyDatabaseName;Uid=MyUsername;Pwd=MyPassword;"
使用DSN进行连接:
"Provider=MSDASQL;PersistSecurityInfo=False;Trusted_Connection=Yes;DataSource=MyDSN;catalog=MyDatabase;"
OLEDBProviderforOLAP
"Provider=MSOLAP;DataSource=MyOLAPServerName;InitialCatalog=MyOLAPDatabaseName;"
通过http连接:
这个特征允许客户端应用程序通过在客户端应用程序连接字符串的DataSource参数中指定一个URL并使用IIS连接到一个分析服务器。这种连接方法允许PivotTable服务通过防火墙或者代理服务器连接到分析服务器。一个特殊的ASP页面Msolap.asp通过IIS进行连接。当连接到服务器时,这个文件一定在这个目录中并且作为URL的一部分(例如myserver/myolap/)。
使用url连接:
"Provider=MSOLAP;DataSource=MyOLAPServerName/;InitialCatalog=MyOLAPDatabaseName;"
使用ssl连接:
"Provider=MSOLAP;DataSource=https://MyOLAPServerName/;InitialCatalog=MyOLAPDatabaseName;"
OLEDBProviderforActiveDirectory
"Provider=ADSDSOObject;UserId=myUsername;Password=myPassword;"
OLEDBProviderforIndexServer
"provider=msidxs;DataSource=MyCatalog;"
OLEDBDataLinkConnections
"FileName=c:\\DataBasePath\\DatabaseName.udl;"
Outlook2000personalmailbox
"Provider=Microsoft.Jet.OLEDB.4.0;Outlook9.0;MAPILEVEL=;DATABASE=C:\\Temp\\;"
使用任何临时文件夹代替c:\temp。这将在那个文件夹创建一个模式文件,当你打开它时,它会显示可以得到的所有字段。空的mapilevel表明最高层的文件夹。
Exchangemailbox
"Provider=Microsoft.Jet.OLEDB.4.0;Exchange4.0;MAPILEVEL=Mailbox-PatSmith|;DATABASE=C:\\Temp\\;"
使用任何临时文件夹代替c:\temp.
注意:你能象数据库一样对mailstore输入查询
举例:"SQL"SELECTContacts.*FROMContacts;"