大家看看下面这段程序的问题出在哪里???

八爪鱼-杭州 2004-03-14 04:23:25
说明当n<2000时程序都不会抛出异常。
程序主要是为了测试in(1,2,3,...n)中n的最大值为多少
相关贴子:
http://expert.csdn.net/Expert/topic/2840/2840481.xml?temp=.9044306
-----------------------------------------
string s="";
int n=3000;
for(int i=0;i<n;i++){s+=(i+",");}
s+="0";
string strConnection="连接字符串";
SqlConnection conn=new SqlConnection(strConnection);
string sql="select * from students where studentid in("+s+")";
DataSet ds=new DataSet();
try
{
SqlDataAdapter adapter=new SqlDataAdapter(sql,conn);
adapter.Fill(ds);
MessageBox.Show("ok!!");
}
catch(SqlException se)
{
MessageBox.Show(se.Message);
}

...全文
28 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bob 2004-04-02
  • 打赏
  • 举报
回复
楼主,我在这里先向你道歉!

我记得当时那句话不是在你的贴上发出的,可能是我当时一时疏忽了。

因为当时有一个贴确实让我很气愤。

刚刚看了你的信息,我就一直在找原因,因为在你的贴上根本就没有倒分现象。

没有想到我让你如此气愤。

再次向你道歉!!!
八爪鱼-杭州 2004-04-02
  • 打赏
  • 举报
回复
?????????????
昏,这个贴子有人回答到点子了吗?都没回答到点子了我凭什么要给那么多分?
我犯傻吗?无缘无故要倒分给小号?分能吃能穿还是能换钱啊?
Bob 2004-03-27
  • 打赏
  • 举报
回复
晕,明显的倒分现象!
ssdjmcj8048 2004-03-26
  • 打赏
  • 举报
回复
我想你直接用SqlCommand去执行可能就会很好(cmd.CommandText = yourSql)。
有一个问题,就是通过Adapter或SqlCommand通过参数的方式调用(execsql)的方式(长sql语句)效率会非常低,至于为什么,我至今也没有弄明白,在sql查询器中都不会有这样的问题。
qazsw 2004-03-26
  • 打赏
  • 举报
回复
?
萝卜-Robbie 2004-03-25
  • 打赏
  • 举报
回复
这个错误应该是由于SqlDataAdapter等待超时引起的,你可以将SqlDataAdapter.SelectCommand.CommandTimeout属性设为0(表示无限期等待),具体可以看帮助
k4 2004-03-19
  • 打赏
  • 举报
回复
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");



八爪鱼-杭州 2004-03-19
  • 打赏
  • 举报
回复
超时异常,但是我把数据库的超时已经设成无时限了
八爪鱼-杭州 2004-03-19
  • 打赏
  • 举报
回复
谢谢楼上的两位,那么说是因为这条语句引起服务器停止响应了
但是我在查询分析器里执行这条语句能够很快就出来的呀
select * from students where studentid in(1,2,3,4,5....n)
---------------
n=3000
CMIC 2004-03-19
  • 打赏
  • 举报
回复
这样的语句很容易是数据库所在服务器停止响应。
同意楼上的,用Between。
Bob 2004-03-19
  • 打赏
  • 举报
回复
应该是Sql语句的问题,IN语句效率太低啦。

时间复杂度=M×N

应该考虑用Between之类的。
八爪鱼-杭州 2004-03-19
  • 打赏
  • 举报
回复
to 楼上两位:是SqlException,字符串没关系的
gabriel1 2004-03-19
  • 打赏
  • 举报
回复
c#里没有变量的概念,string也是对象,也是引用类型。
它改变将会创建另外一个string对象副本。
turnmissile 2004-03-18
  • 打赏
  • 举报
回复
不了解

关注。。。
lkal4587 2004-03-15
  • 打赏
  • 举报
回复
去看这个

http://iceshark.1816.net/csharp/effectivecsharpworkingwithstring.htm
zhpsam109 2004-03-15
  • 打赏
  • 举报
回复
up!
EastenChild 2004-03-14
  • 打赏
  • 举报
回复
你没有说什么异常 但是这样的代码确实可能出现问题,for循环那段,因为string类+=时,实际并没有修改原来的对象,而是新创建了一个:string类就是这样工作的,所以当这样重量级别的修改时,资源会被大量快速的反复分配,有可能出现问题。

微软推荐,当使用较多修改的字符串对象时,使用System.Text.StringBuilder 类。
Dugu_Niu 2004-03-14
  • 打赏
  • 举报
回复
出现的是什么异常?

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧