我发现很多demo程序跟数据库打交道的时候都是
如果有一个页面要从数据库取得数据时都是先连接数据库。取得
数据。断开数据库连接。。
对每一个要跟数据库交互的页面都是如此。
如此反复。。
我想问一下。
每一次取数据都要取连接数据库。也就是每次都要声明一个connection对象。
用完再断开。这样好吗?
为什么不一直连着呢?直到他退出网站为止。。
就是说用一个全局connection对象
而不是再程序里面声明一个局部的。
我以前没有做过网站。理解不对还请各位高手多多指教。
但我以前用ado作intranet的时候都是一个用户登陆直到他退出程序。
他都是连再数据库上面的。
18 个解决方案
#1
可以用一个全局connection对象
但不说,就不是不用连接多次了
因为你总不能连着不放吧
但不说,就不是不用连接多次了
因为你总不能连着不放吧
#2
一直连在上面不是个好主意,会出很多问题的~
如果你不想每次都写这个连接字符串,可以定义一个全局字符串常量,以后直接OPen一下就可以了。
如果你不想每次都写这个连接字符串,可以定义一个全局字符串常量,以后直接OPen一下就可以了。
#3
<configuration>
<system.web>
........
</system.web>
<!--注意要放在<system.web>节点外-->
<appSettings>
<add key="myConn" value="server=.;uid=sa;password=;database=yourDatabse;min pool size=4;" />
</appSettings>
</configuration>
引用:
sqlConnection myCn=new SqlConnection(system.Configuration.ConfigurationSettings.AppSettings["myConn"]);
<system.web>
........
</system.web>
<!--注意要放在<system.web>节点外-->
<appSettings>
<add key="myConn" value="server=.;uid=sa;password=;database=yourDatabse;min pool size=4;" />
</appSettings>
</configuration>
引用:
sqlConnection myCn=new SqlConnection(system.Configuration.ConfigurationSettings.AppSettings["myConn"]);
#4
可是你每个跟数据库交互的页面都要这样那不是频繁连接数据库了。
这样对数据库的性能也不好。不见的快吧。?
请指教。。
这样对数据库的性能也不好。不见的快吧。?
请指教。。
#5
连接字符串可以写在web.config里,然后用appsetting去连接的,这样代码可以简单一点,但还是得用一次连一次,不过我觉得这样可以保证数据库连接的稳定性.
#6
这个我知道的。我需要的不是如何写。我需要的是
为什么每次跟数据库交互都要连接。取数据。然后断开。
我觉的这样不好。。比如这个sqlConnection 的对象为什么不是一个持续连接的对象。
(争对那个用户。)而要反复的连接数据库。。
为什么每次跟数据库交互都要连接。取数据。然后断开。
我觉的这样不好。。比如这个sqlConnection 的对象为什么不是一个持续连接的对象。
(争对那个用户。)而要反复的连接数据库。。
#7
其實很多辦法的
你可以寫在web.config裡面.也可以寫成xml或者ini放到對應的目錄下
執行的讀出來就可以了
你可以寫在web.config裡面.也可以寫成xml或者ini放到對應的目錄下
執行的讀出來就可以了
#8
原来的Recordset主要在连接模式下运行。这就会导致多个数据库的锁定和活动的连接,
从而影响了应用程序的性能和可伸缩性。
现在,你应该看到.NET的优点之一了,
它可以离线编辑数据。
别的不说,至少你可以少向MS买几个SQL授权吧
从而影响了应用程序的性能和可伸缩性。
现在,你应该看到.NET的优点之一了,
它可以离线编辑数据。
别的不说,至少你可以少向MS买几个SQL授权吧
#9
這個你也可以連接一次
如:
SqlConnection Conn =new SqlConnection("連接串");
SqlCommand Comm=new SqlCommand();
Comm.CommandText="insert.."
..
Comm.CommandText="Select * from ..."
...
Conn.Close();
如:
SqlConnection Conn =new SqlConnection("連接串");
SqlCommand Comm=new SqlCommand();
Comm.CommandText="insert.."
..
Comm.CommandText="Select * from ..."
...
Conn.Close();
#10
也许我没有说清楚。
我的意思不是那个connectionstring放再什么地方。
我的意思是connection对象为什么每次都要声明。。
每次都要open。取完数据之后马上要close;
如此反复。。
我以前没有做过网站。我需要的不是你们给我源码如何连接。(这个我会)
而是思想。。为什么要这么作。。
说个理由先。
因为我们以前作intranet的时候都是connection对象是一直连在上面的。直到那个
具体的用户退出整个应用程序。。
我想作网站也应该是这样的。(我是照搬的。没有道理请不要骂我。我是第一次)
我的意思不是那个connectionstring放再什么地方。
我的意思是connection对象为什么每次都要声明。。
每次都要open。取完数据之后马上要close;
如此反复。。
我以前没有做过网站。我需要的不是你们给我源码如何连接。(这个我会)
而是思想。。为什么要这么作。。
说个理由先。
因为我们以前作intranet的时候都是connection对象是一直连在上面的。直到那个
具体的用户退出整个应用程序。。
我想作网站也应该是这样的。(我是照搬的。没有道理请不要骂我。我是第一次)
#11
你可以在查询分析器中做个实验。
当你同时打开五个以上的活动连接时,将会对数据库的性能产生影响。
当到到10个以上的时候。。
嘿嘿,,,
你看看吧
一个简单的select * from yourtable
ctrl + k
ctrl + e
看一下执行规划你就可以知道花费CPU时间的变化了
当你同时打开五个以上的活动连接时,将会对数据库的性能产生影响。
当到到10个以上的时候。。
嘿嘿,,,
你看看吧
一个简单的select * from yourtable
ctrl + k
ctrl + e
看一下执行规划你就可以知道花费CPU时间的变化了
#12
请问各位大侠在公司用ado.net + asp.net + c# 开发网站也是每次都连接。
取出数据之后,然后再断开的吗。。
取出数据之后,然后再断开的吗。。
#13
其实dataAdapter是会自动调用
cn.open()
和
cn.close()
的,也就是说,
使用dataAdapter的时候
你不用显式调用这两个方法的
cn.open()
和
cn.close()
的,也就是说,
使用dataAdapter的时候
你不用显式调用这两个方法的
#14
我们做的企业内部网本来人就不多(没有几千几万的)。。
cpu也负担的起。所以一直连接的时候效率高。
是不是为了减轻 服务器对internet 访问的负担。所以才这样的。
我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的。
我又没有做过这方面的东西。
而看了一些asp.net + ado.net + c#的demo源程序发现跟他做的不一样。
所以才有此一问。。
另:一般一个贴应该发多少分。我是新来的。不知道给多给少。还请各位指教。
cpu也负担的起。所以一直连接的时候效率高。
是不是为了减轻 服务器对internet 访问的负担。所以才这样的。
我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的。
我又没有做过这方面的东西。
而看了一些asp.net + ado.net + c#的demo源程序发现跟他做的不一样。
所以才有此一问。。
另:一般一个贴应该发多少分。我是新来的。不知道给多给少。还请各位指教。
#15
我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的
那是因为原来的ADO中的Recordset就要求在连接模式下使用的
你不连接着还不行(除非你发大力气去改进)
分数吗
当然是越多越好^_^
那是因为原来的ADO中的Recordset就要求在连接模式下使用的
你不连接着还不行(除非你发大力气去改进)
分数吗
当然是越多越好^_^
#16
如果一直连接着数据库肯定要影响执行效率的,还是什么时候用什么连接,用完就关闭效率高!
#17
感谢
#18
>我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的
你的全局是什么意思?应用程序级别?还是页面级别?
如果是页面级别,不是什么大问题。你一个页面用一个cnn应该不会出什么大问题。
如果是 app级别的话,就不行了。a页面cnn.open 结果,b页面把它关了。然后 a知道么?
至于很多人 在一个页面内,用到数据库的时候就 new connection,也没什么不可以。(我也是这样,只不过我把这个过程封装在中间层,不需要做页面的人去考虑数据库连接问题。)至于效率嘛,不是什么大问题,.net有连接池管理。创建对象开销,可以忽略吧?毕竟是企业应用,真正消耗时间的 是在数据库。
你的全局是什么意思?应用程序级别?还是页面级别?
如果是页面级别,不是什么大问题。你一个页面用一个cnn应该不会出什么大问题。
如果是 app级别的话,就不行了。a页面cnn.open 结果,b页面把它关了。然后 a知道么?
至于很多人 在一个页面内,用到数据库的时候就 new connection,也没什么不可以。(我也是这样,只不过我把这个过程封装在中间层,不需要做页面的人去考虑数据库连接问题。)至于效率嘛,不是什么大问题,.net有连接池管理。创建对象开销,可以忽略吧?毕竟是企业应用,真正消耗时间的 是在数据库。
#1
可以用一个全局connection对象
但不说,就不是不用连接多次了
因为你总不能连着不放吧
但不说,就不是不用连接多次了
因为你总不能连着不放吧
#2
一直连在上面不是个好主意,会出很多问题的~
如果你不想每次都写这个连接字符串,可以定义一个全局字符串常量,以后直接OPen一下就可以了。
如果你不想每次都写这个连接字符串,可以定义一个全局字符串常量,以后直接OPen一下就可以了。
#3
<configuration>
<system.web>
........
</system.web>
<!--注意要放在<system.web>节点外-->
<appSettings>
<add key="myConn" value="server=.;uid=sa;password=;database=yourDatabse;min pool size=4;" />
</appSettings>
</configuration>
引用:
sqlConnection myCn=new SqlConnection(system.Configuration.ConfigurationSettings.AppSettings["myConn"]);
<system.web>
........
</system.web>
<!--注意要放在<system.web>节点外-->
<appSettings>
<add key="myConn" value="server=.;uid=sa;password=;database=yourDatabse;min pool size=4;" />
</appSettings>
</configuration>
引用:
sqlConnection myCn=new SqlConnection(system.Configuration.ConfigurationSettings.AppSettings["myConn"]);
#4
可是你每个跟数据库交互的页面都要这样那不是频繁连接数据库了。
这样对数据库的性能也不好。不见的快吧。?
请指教。。
这样对数据库的性能也不好。不见的快吧。?
请指教。。
#5
连接字符串可以写在web.config里,然后用appsetting去连接的,这样代码可以简单一点,但还是得用一次连一次,不过我觉得这样可以保证数据库连接的稳定性.
#6
这个我知道的。我需要的不是如何写。我需要的是
为什么每次跟数据库交互都要连接。取数据。然后断开。
我觉的这样不好。。比如这个sqlConnection 的对象为什么不是一个持续连接的对象。
(争对那个用户。)而要反复的连接数据库。。
为什么每次跟数据库交互都要连接。取数据。然后断开。
我觉的这样不好。。比如这个sqlConnection 的对象为什么不是一个持续连接的对象。
(争对那个用户。)而要反复的连接数据库。。
#7
其實很多辦法的
你可以寫在web.config裡面.也可以寫成xml或者ini放到對應的目錄下
執行的讀出來就可以了
你可以寫在web.config裡面.也可以寫成xml或者ini放到對應的目錄下
執行的讀出來就可以了
#8
原来的Recordset主要在连接模式下运行。这就会导致多个数据库的锁定和活动的连接,
从而影响了应用程序的性能和可伸缩性。
现在,你应该看到.NET的优点之一了,
它可以离线编辑数据。
别的不说,至少你可以少向MS买几个SQL授权吧
从而影响了应用程序的性能和可伸缩性。
现在,你应该看到.NET的优点之一了,
它可以离线编辑数据。
别的不说,至少你可以少向MS买几个SQL授权吧
#9
這個你也可以連接一次
如:
SqlConnection Conn =new SqlConnection("連接串");
SqlCommand Comm=new SqlCommand();
Comm.CommandText="insert.."
..
Comm.CommandText="Select * from ..."
...
Conn.Close();
如:
SqlConnection Conn =new SqlConnection("連接串");
SqlCommand Comm=new SqlCommand();
Comm.CommandText="insert.."
..
Comm.CommandText="Select * from ..."
...
Conn.Close();
#10
也许我没有说清楚。
我的意思不是那个connectionstring放再什么地方。
我的意思是connection对象为什么每次都要声明。。
每次都要open。取完数据之后马上要close;
如此反复。。
我以前没有做过网站。我需要的不是你们给我源码如何连接。(这个我会)
而是思想。。为什么要这么作。。
说个理由先。
因为我们以前作intranet的时候都是connection对象是一直连在上面的。直到那个
具体的用户退出整个应用程序。。
我想作网站也应该是这样的。(我是照搬的。没有道理请不要骂我。我是第一次)
我的意思不是那个connectionstring放再什么地方。
我的意思是connection对象为什么每次都要声明。。
每次都要open。取完数据之后马上要close;
如此反复。。
我以前没有做过网站。我需要的不是你们给我源码如何连接。(这个我会)
而是思想。。为什么要这么作。。
说个理由先。
因为我们以前作intranet的时候都是connection对象是一直连在上面的。直到那个
具体的用户退出整个应用程序。。
我想作网站也应该是这样的。(我是照搬的。没有道理请不要骂我。我是第一次)
#11
你可以在查询分析器中做个实验。
当你同时打开五个以上的活动连接时,将会对数据库的性能产生影响。
当到到10个以上的时候。。
嘿嘿,,,
你看看吧
一个简单的select * from yourtable
ctrl + k
ctrl + e
看一下执行规划你就可以知道花费CPU时间的变化了
当你同时打开五个以上的活动连接时,将会对数据库的性能产生影响。
当到到10个以上的时候。。
嘿嘿,,,
你看看吧
一个简单的select * from yourtable
ctrl + k
ctrl + e
看一下执行规划你就可以知道花费CPU时间的变化了
#12
请问各位大侠在公司用ado.net + asp.net + c# 开发网站也是每次都连接。
取出数据之后,然后再断开的吗。。
取出数据之后,然后再断开的吗。。
#13
其实dataAdapter是会自动调用
cn.open()
和
cn.close()
的,也就是说,
使用dataAdapter的时候
你不用显式调用这两个方法的
cn.open()
和
cn.close()
的,也就是说,
使用dataAdapter的时候
你不用显式调用这两个方法的
#14
我们做的企业内部网本来人就不多(没有几千几万的)。。
cpu也负担的起。所以一直连接的时候效率高。
是不是为了减轻 服务器对internet 访问的负担。所以才这样的。
我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的。
我又没有做过这方面的东西。
而看了一些asp.net + ado.net + c#的demo源程序发现跟他做的不一样。
所以才有此一问。。
另:一般一个贴应该发多少分。我是新来的。不知道给多给少。还请各位指教。
cpu也负担的起。所以一直连接的时候效率高。
是不是为了减轻 服务器对internet 访问的负担。所以才这样的。
我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的。
我又没有做过这方面的东西。
而看了一些asp.net + ado.net + c#的demo源程序发现跟他做的不一样。
所以才有此一问。。
另:一般一个贴应该发多少分。我是新来的。不知道给多给少。还请各位指教。
#15
我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的
那是因为原来的ADO中的Recordset就要求在连接模式下使用的
你不连接着还不行(除非你发大力气去改进)
分数吗
当然是越多越好^_^
那是因为原来的ADO中的Recordset就要求在连接模式下使用的
你不连接着还不行(除非你发大力气去改进)
分数吗
当然是越多越好^_^
#16
如果一直连接着数据库肯定要影响执行效率的,还是什么时候用什么连接,用完就关闭效率高!
#17
感谢
#18
>我朋友他们公司以前用asp + ado 做网站就是用一个全局connection对象的
你的全局是什么意思?应用程序级别?还是页面级别?
如果是页面级别,不是什么大问题。你一个页面用一个cnn应该不会出什么大问题。
如果是 app级别的话,就不行了。a页面cnn.open 结果,b页面把它关了。然后 a知道么?
至于很多人 在一个页面内,用到数据库的时候就 new connection,也没什么不可以。(我也是这样,只不过我把这个过程封装在中间层,不需要做页面的人去考虑数据库连接问题。)至于效率嘛,不是什么大问题,.net有连接池管理。创建对象开销,可以忽略吧?毕竟是企业应用,真正消耗时间的 是在数据库。
你的全局是什么意思?应用程序级别?还是页面级别?
如果是页面级别,不是什么大问题。你一个页面用一个cnn应该不会出什么大问题。
如果是 app级别的话,就不行了。a页面cnn.open 结果,b页面把它关了。然后 a知道么?
至于很多人 在一个页面内,用到数据库的时候就 new connection,也没什么不可以。(我也是这样,只不过我把这个过程封装在中间层,不需要做页面的人去考虑数据库连接问题。)至于效率嘛,不是什么大问题,.net有连接池管理。创建对象开销,可以忽略吧?毕竟是企业应用,真正消耗时间的 是在数据库。