近一个月来,我在慢慢地摸索着写自己的第一个C#程序。
我想做一个天气预报打印程序,从ACCEESS中提取上一次的预报文本,然后进行修改,再打印,保存。
一直到现在还没有写好,在这个过程中,我感觉到了自己代码很笨拙,因此我提了下面一些问题,可能太简单,但是还请大家详细一点地给我指点。1、我不知道应当在哪里处理我的数据库连接、操作代码,我现在的做法是在Form_load里定义connection,打开数据库,提取记录,然后关闭。当按下保存里,又重新定义connection,打开数据库,保存数据。 我自己也觉得太笨了,那么,一个良好的实现应当是怎么样的?(希望有代码示例)2、我以前写过VFP的程序,我习惯于把所有东西存在数据库里,比如工作人员的代号和姓名,并在程序运行时全读到内存里。在C#中,我是不是也应当把这些依次读到DataSet里?这样做是一个高效的作法吗?(在我这个程序里,我为自己要用很多个select读表而心烦,因为类似的东西不少)3、在发布预报时,要面向十几个乡镇,每个乡镇都需要乡镇名,天气,最低气温,最高气温。因此,现已我已经在页面上拖放了4*12=48个textbox!在代码处理时,我只能一个个处理,不管是初始化、保存、打印就像这样:
this.textTownName1.Text="aa";
this.textTownName2.Text="BB";
...
...
...
我想大家写程序时不可能像我这样吧?那么应当如何处理这种情况?
我想做一个天气预报打印程序,从ACCEESS中提取上一次的预报文本,然后进行修改,再打印,保存。
一直到现在还没有写好,在这个过程中,我感觉到了自己代码很笨拙,因此我提了下面一些问题,可能太简单,但是还请大家详细一点地给我指点。1、我不知道应当在哪里处理我的数据库连接、操作代码,我现在的做法是在Form_load里定义connection,打开数据库,提取记录,然后关闭。当按下保存里,又重新定义connection,打开数据库,保存数据。 我自己也觉得太笨了,那么,一个良好的实现应当是怎么样的?(希望有代码示例)2、我以前写过VFP的程序,我习惯于把所有东西存在数据库里,比如工作人员的代号和姓名,并在程序运行时全读到内存里。在C#中,我是不是也应当把这些依次读到DataSet里?这样做是一个高效的作法吗?(在我这个程序里,我为自己要用很多个select读表而心烦,因为类似的东西不少)3、在发布预报时,要面向十几个乡镇,每个乡镇都需要乡镇名,天气,最低气温,最高气温。因此,现已我已经在页面上拖放了4*12=48个textbox!在代码处理时,我只能一个个处理,不管是初始化、保存、打印就像这样:
this.textTownName1.Text="aa";
this.textTownName2.Text="BB";
...
...
...
我想大家写程序时不可能像我这样吧?那么应当如何处理这种情况?
2。数据量不是很大时,可以全部读到内存中。数据量很大时不是一个好注意,建议使用存储过程分页来实现。
3方法如下
string Temp="";
for(int i=1;i<49;i++)
{
TextBox Tb=Page.FindControl("textTownName"+i+"");
Temp+=Tb+",";
}
这样就把所有的textbox
然后怎么操作就不用我说了吧
for(int i=1;i<49;i++)
{
TextBox Tb=Page.FindControl("textTownName"+i+"");
Temp+=Tb.Text.Trim()+",";//上个贴,这句写错了
}
//这样就把所有的textbox的值都存到一个字符串中了
//t然后怎么操作就不用我说了吧
TextBox Tb=Page.FindControl("textTownName"+i+"") as TextBox;
也可以用反射,但是不推荐.
对于如何能够简体对SQL或数据的处理,你可以学习一下Petshop,对你的数据连接层进行封装,封装到什么程度就看你的个人水平;
2.DataSet就是一个程序中的变量集,如果数据量少,这样作当然是个不错的主意,但是当数据量大的时候你就要考虑清楚了,这个时候最好的办法可能就要用到一种所提的对数据连接层进行封装的方法了。
3.如果这些TextBox初始化的内容具有一定的规则可寻的话,你可以考虑用窗口的Controls集合加上循环来实现,或才可以参考楼上的。