- 积分
- 40165
- 好友
- 记录
- 主题
- 帖子
- 听众
- 收听
|
楼主 |
发表于 2013-6-25 15:40:50
|
显示全部楼层
[重庆]Eagle() 15:06:38
声明的时候,不带修饰符的,都是私有的
[重庆]Eagle() 15:07:32
而“全局变量”和“私有变量”又是2码事
♂[北京]-Ro4ters() 15:08:46
& Chr(13) & Chr(10) 这是不是回车和换行啊?
[重庆]Eagle() 15:08:51
public 是方便其它类调用
♂nidaye1() 15:09:13
StringBuilder sql = new StringBuilder();
SqlParameter[] param;
public void insert()
{
sql.Remove(0, sql.Length);
sql.Append("insert.....");
//insert...
}
public void update()
{
sql.Remove(0, sql.Length);
sql.Append("update....");
//update...
}
public void delete()
{
sql.Remove(0, sql.Length);
sql.Append("delete ....");
//delete
}
[重庆]Eagle() 15:09:32
阿斯科马表
[重庆]Eagle() 15:09:39
里面有解释
♂nidaye1() 15:09:44
那这样的代码是可行的?而且代码质量还行?
♂站长苏飞() 15:10:54
这样的方法我绝对反对。呵呵
♂¤好孩子¤ () 15:10:55
看着好别扭呀
[重庆]Eagle() 15:11:05
贼别扭
♂nidaye1() 15:11:12
帮忙修改下?
[重庆]Eagle() 15:11:16
代码没有达到重用
♂¤好孩子¤ () 15:11:36
如果只是这么简单不如定义个string sql,然后每个方法sql=""来得直观
[重庆]Eagle() 15:11:59
苏飞,看看你的意见
♂nidaye1(48430935) 15:12:01
不是,我是演示下,sql语句的长度不定的。
♂nidaye1() 15:12:11
可能会有多次append
♂nidaye1() 15:12:21
向各位取取经,嘿嘿。
♀linxin() 15:12:45
sql语句可以+=的吧
[重庆]Eagle() 15:12:54
首先,你这个就不能达到多次append
[重庆]Eagle() 15:13:11
因为你append之前就清空了
♂¤好孩子¤ () 15:13:45
可以的,人家每个方法里sql语句是不共用
♂nidaye1() 15:14:03
版主,每个方法里sql是完全不一样的
[重庆]Eagle() 15:15:19
拼接怎么拼接?
♀linxin() 15:16:19
♀linxin() 15:16:37
这样的 是不知道条件有几个的时候
[重庆]Eagle() 15:17:02
方法显然差参数撒
♂nidaye1() 15:17:25
哦,示例没写好,
♂nidaye1() 15:17:44
上面有个SqlParameter[] param;后来忘记加上去了
[重庆]Eagle() 15:17:56
而且重用率不高
♂站长苏飞() 15:18:56
我只建议这样写,
♂站长苏飞() 15:18:57
public void insert()
{
StringBuilder sql = new StringBuilder();
sql.Append("update table set UserName=@username where id=@id");
//insert...
}
public void update()
{
StringBuilder sql = new StringBuilder();
sql.Append("update table set UserName=@UserName where id=@id");
//update...
}
public void delete()
{
StringBuilder sql = new StringBuilder();
sql.Append("update table set UserName=@UserName where id=@id");
//delete
}
[重庆]Eagle() 15:19:33
[重庆]Eagle() 15:19:57
飞哥,你这不是坑爹吗?
[重庆]Eagle() 15:20:18
用一次创建一个
♂nidaye1() 15:20:23
站长,您这样写法是不建议开始说的全局变量吗?
[重庆]Eagle() 15:20:23
你都不回收一下
♂站长苏飞() 15:20:51
方法里的调用完方法自动回收
♂站长苏飞() 15:21:01
定义在外面的可就不一定了,
♂站长苏飞() 15:21:08
你不建议这种是因为你不理解
[重庆]Eagle() 15:21:24
我知道代码有回收机制
♂小() 15:21:30
想到一个表的数据到excel,但表的数据有几百万条,太大了,用pl/sql每次查询都是溢出,程序自动崩掉。。
[重庆]Eagle() 15:21:31
但你这个....
♂小() 15:21:35
还知道有什么方法?
♂站长苏飞() 15:22:55
如果你没有数亿数据量处理的经验是体会不到这点的。
♂站长苏飞() 15:23:11
这也是为什么几乎所有的代码生成器都是这样写的原因
♂nidaye1() 15:23:22
是的,
♂站长苏飞() 15:23:24
比如流行的动软代码生成器
♂nidaye1() 15:23:30
我刚刚还在看动软的代码
♂小() 15:23:45
♂站长苏飞() 15:23:46
你一看就说不能这样,那我也可以看出来你没有这方面经验和体会
♂nidaye1() 15:24:03
我不太明白原因
♂nidaye1() 15:24:10
所以请教了这个笨问题
♂小() 15:24:10
各位有啥解决的么
♂小() 15:25:00
额?
♂站长苏飞() 15:25:05
写在方法外面,如果你的类对象不起出作用或是不会回收的,但方法就不一样,调用完就回收
♂站长苏飞() 15:25:48
如果你处理的是100多条,或者是几千,几万条数据也就算了,如果是上亿条,你会发现,你的内存和Cpu会增加N多
♂站长苏飞() 15:26:07
两种方法大家拿1个亿数据测试一下很明显的效果
♂nidaye1() 15:26:43
有点小蒙,站长,你推荐的是刚刚发修改后的完整代码那段?
♂站长苏飞() 15:26:53
大家想一下为什么代码生成器都建议我写的那种,而不是写在方法外面,难道他们不懂重复使用吗?这是有原因的。
♂站长苏飞() 15:27:19
这种 public void insert()
{
StringBuilder sql = new StringBuilder();
sql.Append("update table set UserName=@UserName where id=@id");
//insert...
}
public void update()
{
StringBuilder sql = new StringBuilder();
sql.Append("update table set UserName=@UserName where id=@id");
//update...
}
public void delete()
{
StringBuilder sql = new StringBuilder();
sql.Append("update table set UserName=@UserName where id=@id");
//delete
}
♂nidaye1() 15:27:36
明白了。
♂站长苏飞() 15:28:05
字符处理如果不是因为技术无法实现建议使用我发的这种
♂¤好孩子¤ () 15:29:27
又学习了,好开心
♂[山东]火山() 15:30:20
这是要用存储过程?
♂站长苏飞() 15:30:51
大家下载个代码生成器或者看看微软的教程就明白了基本上都是这种写法
[重庆]Eagle() 15:31:10
好吧,顶一个
♂nidaye1() 15:31:55
♂nidaye1() 15:31:59
是这样的,
♂站长苏飞() 15:32:28
这是必须的,任何一个C#高手或者是提供商都不会烦这样的错误
♂站长苏飞() 15:32:52
因为他们应该都体会过后果
♂nidaye1() 15:32:56
那还有个小问题:就是sqlparameter那块
♂nidaye1() 15:33:02
SqlParameter[] parameters = {
new SqlParameter("@ID", SqlDbType.VarChar,100),
new SqlParameter("@CaiDanXiangMing", SqlDbType.VarChar,100),
new SqlParameter("@CaiDanCiXu", SqlDbType.SmallInt,2),
new SqlParameter("@URL", SqlDbType.VarChar,255),
new SqlParameter("@CaiDanShuoMing", SqlDbType.VarChar,100),
new SqlParameter("@ChuFaTiaoJian", SqlDbType.VarChar,2000)};
parameters[0].Value = model.ID;
parameters[1].Value = model.CaiDanXiangMing;
parameters[2].Value = model.CaiDanCiXu;
parameters[3].Value = model.URL;
parameters[4].Value = model.CaiDanShuoMing;
parameters[5].Value = model.ChuFaTiaoJian;
♂nidaye1() 15:33:25
比如像这样的,还有一种是可以用new sqlparameter("@id", 11);
♂nidaye1() 15:33:59
两种都可行,动软是用了上者,
♂[北京]-Ro4ters() 15:34:13
new 后面还要加到参数里面去.
♂[北京]-Ro4ters() 15:34:31
还不如用你发的.还能控制type不容易出错
♂站长苏飞() 15:35:56
这种写法大家注意后面必须是变量
|
|