数据库连接串的【参数解析】

在做项目中,常常使用到数据库连接串,大家都经常用到过,但你对其中的各【参数】真的熟悉吗?Max Pool Size什么意思,有何影响?commandtimeout你设置过吗?

也许你并不太注意,下文就结合个人的应用,对这些连接串相关的内容进行说明。

这里以C#连接为例:

1.C#连接SQL Server
程序代码: 
--------------------------------------------------------------------------------

using System.Data;
using System.Data.SqlClient;

...

string strConnection="user id=sa;password=;";
strConnection+="initial catalog=Northwind;Server=YourSQLServer,;";
strConnection+="Connect Timeout=30";

SqlConnection objConnection=new SqlConnection(strConnection);

...

objConnection.Open();
objConnection.Close();

...

--------------------------------------------------------------------------------

解释:

连接SQL Server数据库的机制与连接Access的机制没有什么太大的区别,只是改变了Connection对象和连接字符串中的不同参数.

首先,连接SQL Server使用的命名空间不是"System.Data.OleDb",而是"System.Data.SqlClient".

其次就是他的连接字符串了,我们一个一个参数来介绍(注意:参数间用分号分隔):
"user id=sa":连接数据库的验证用户名为sa.他还有一个别名"uid",所以这句我们还可以写成"uid=sa".
"password=":连接数据库的验证密码为空.他的别名为"pwd",所以我们可以写为"pwd=".

这里注意,你的SQL Server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录.

如果你的SQL Server设置为Windows登录,那么在这里就不需要使用"user id"和"password"这样的方式来登录,而需要使用"Trusted_Connection=SSPI"来进行登录.

"initial catalog=Northwind":使用的数据源为"Northwind"这个数据库.他的别名为"Database",本句可以写成"Database=Northwind".
"Server=YourSQLServer":使用名为"YourSQLServer"的服务器.他的别名为"Data Source","Address","Addr".如果使用的是本地数据库且定义了实例名,则可以写为"Server=(local)\实例名";如果是远程服务器,则将"(local)"替换为远程服务器的名称或IP地址.

指定数据库连接端口,默认是1433,如果特殊设定,则需要在此串中进行单独定义,具体位置在Data Source={0},{1} 通过“,” 添加在服务器地址后边,

对于有特殊端口设置的应用,此方法是必须的。


"Connect Timeout=30":连接超时时间为30秒.

Max Pool Size 这个属性指定数据库连接池的大小,此属性可不能忽视,在项目中数据库连接串大家都是直接复制使用而没有细看每个属性的意义,在应用中

会发现很多问题。在一个项目中,我直接使用Max Pool Size=30,本机运行没任何问题,但到客户端进行测试中,发现当服务连接几十台客户机后,客户机都提示连接数据库失败,最后才发现此处的设置。那么Max Pool Size指定了数据库最大的缓冲池,超过此缓冲池的新连接只能进行等待,当有连接释放时,才能进入。

因此Max Pool Size 应该根据实际情况进行设定,那是否设置越大越好了,个人感觉这个可能要与服务器的综合配置有关,如果客户机环境没那么多设置过大是否会造成资源的浪费呢。

在这里,建立连接对象用的构造函数为:SqlConnection.

eg: Data Source=127.0.0.1,1433;Initial Catalog=Student;Persist Security Info=True;User ID=sa;Password=sa;Max Pool Size=400


======================================================

 

2.C#连接MySQL
程序代码: 
--------------------------------------------------------------------------------

using MySQLDriverCS;

 

string strConnection="user id=sa;password=;";
strConnection+="initial catalog=Northwind;Server=YourMySQLServer;port=3306";
strConnection+="Connect Timeout=30";

// 建立数据库连接
MySQLConnection DBConn;
DBConn = new MySQLConnection(strConnection);
DBConn.Open();

// 执行查询语句
MySQLCommand DBComm;
DBComm = new MySQLCommand("select Host,User from user",DBConn);

// 读取数据
MySQLDataReader DBReader = DBComm.ExecuteReaderEx();

// 显示数据
try
{
while (DBReader.Read())
{
Console.WriteLine("Host = {0} and User = {1}", DBReader.GetString(0),DBReader.GetString(1));
}
}
finally
{
DBReader.Close();
DBConn.Close();
}

//关闭数据库连接
DBConn.Close();

--------------------------------------------------------------------------------

解释:

 

"port=":端口号.

在这里,建立连接对象用的构造函数为:MySQLConnection.

 

======================================================

 

3.C#连接Oracle
程序代码: 
--------------------------------------------------------------------------------

using System.Data.OracleClient;
using System.Data;

//在窗体上添加一个按钮,叫Button1,双击Button1,输入以下代码
private void Button1_Click(object sender, System.EventArgs e)
{
string ConnectionString="Data Source=sky;user=system;password=manager;";//写连接串
OracleConnection conn=new OracleConnection(ConnectionString);//创建一个新连接
try
{
conn.Open();
OracleCommand cmd=conn.CreateCommand();

cmd.CommandText="select * from MyTable";//在这儿写sql语句
OracleDataReader odr=cmd.ExecuteReader();//创建一个OracleDateReader对象
while(odr.Read())//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了                
{
Response.Write(odr.GetOracleString(1).ToString());//输出字段1,这个数是字段索引,具体怎么使用字段名还有待研究
}
odr.Close();
}
catch(Exception ee)
{
Response.Write(ee.Message); //如果有错误,输出错误信息
}
finally
{
conn.Close(); //关闭连接
}
}

参考:http://www.cnblogs.com/Wendy_Yu/archive/2011/06/03/2071183.html

http://www.cnblogs.com/kingmoon/archive/2011/06/24/2089072.html

posted @ 2014-06-04 14:57  离散音符  阅读(737)  评论(0编辑  收藏  举报