C#全局变量的问题,两个方法如何共享一个变量

kien17 2010-03-26 07:45:47

string sql="";
int curPage;//当前页索引

//查询按钮
private void button6_Click(object sender, EventArgs e)
{

string name=txtname.Text.Trim();
sql="select * from table where name like '%"+name+"'%";
//部分代码忽略.......
}

//下一页按钮
private void button7_Click(object sender, EventArgs e)
{

curPage++;
DateSet ds=Access.DBhelper(sql,curPage);//当用户点查询后sql依然没有值
//部分代码忽略....
}


当用户点击查询后,sql就被赋值了,但是当用户查询后,再点击“下一页”的时候,sql又变“”了,我知道string sql="";代码又执行了一遍,之前赋值给sql的值就没了,
所以我想实现的是,当用户点击查询按钮后,保存住那个sql语句,然后给其他按钮使用。。。

其实上面的代码不重要,只是想提出我的问题而已,一个全局变量,在被修改后,后面使用该变量的时候能得到它改变后的值
...全文
1080 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinqiuyan 2010-03-27
  • 打赏
  • 举报
回复
给 SQL 赋值单独做一个返回String 类型的方法,每次调用一下这个方法等于重新付给它了哪个值就不会空了
fangjie008 2010-03-27
  • 打赏
  • 举报
回复
只要参数范围允许就可以啊,多线程又另当别论了哦
YC所思所想 2010-03-27
  • 打赏
  • 举报
回复
同页面的方法共用变量可以用viewstate,因为不会过期,也是存储在客户端的隐藏控件中,减少服务器的压力;
跨页面的方法共用变量时可用用session,数据是存储在服务器的内存中,虽然会过期,但是不会像viewstate一样,限制在同一个页面才能使用!
Ray1010 2010-03-27
  • 打赏
  • 举报
回复
单步调试,监视下sql的变化嘛
kensouterry 2010-03-27
  • 打赏
  • 举报
回复
And then I think I could UP master only.
andybang1981 2010-03-27
  • 打赏
  • 举报
回复
B/S,C/S是有区别的,前者是出了方法变量就清空了,得用VIEWSTATE等来保存,后者则没问题可直接使用
I_love_my_town 2010-03-27
  • 打赏
  • 举报
回复
这里没有涉及到传参
I_love_my_town 2010-03-27
  • 打赏
  • 举报
回复
看错了,是我的错
I_love_my_town 2010-03-27
  • 打赏
  • 举报
回复
这个上面说他程序没问题的各位大侠,我只是才学c#

但是以前C,C++都知道传值和传地址的区别,C++中用指针传地址才能出了函数还能保持值。

C#应该用引用方式才能保持住啊,

我的天啊,大家赶快回家补补基础吧,虽然俺已经三年不做开发了。
xiaoziteng 2010-03-27
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


string sql = "";

//查询按钮
private void button1_Click(object sender, EventArgs e)
{

string name = "Boven";
sql = "select * from table where name like '%" + name + "'%";
}

//下一页按钮
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = sql;
}
}
}

试验了,string sql = "";和static string sql = "";都没问题
ProjectDD 2010-03-27
  • 打赏
  • 举报
回复
大单线程里类级变量sql没理由等于“”啊好象,从你代码来看
woshimaikou 2010-03-27
  • 打赏
  • 举报
回复
加个static试试
huangwenquan123 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 goga21cn 的回复:]
引用 15 楼 huangwenquan123 的回复:

我测试过了
如果没加static的话
C# code
string a="";
protected void Button1_Click(object sender, EventArgs e)
{
a = TextBox1.Text;
Response.Write("<script>alert('" + a + "')<……
[/Quote]
呵呵!没有注意看sorry
kien17 2010-03-26
  • 打赏
  • 举报
回复
对啊,我学的时候也记得说不会这样的呀。。。也许是别的问题吧。。我再认真调试一下。。谢谢大家
leon9090 2010-03-26
  • 打赏
  • 举报
回复
设置静态变量
public static string sql="";
除非你关闭程序,不然一直存在!!~
龙宜坡 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wuyi8808 的回复:]

引用 13 楼 kien17 的回复:
我调试过了,它真的把string sql="";执行了一次,然后跳到了“下一页”按钮事件里面去了,所以sql永远是“”,愁死我了


如果是 winform 程序,从你贴出来的代码来看,执行“下一页”按钮事件时,不会把string sql="";执行了一次的。应该是其他地方的问题,这段代码没问题。
[/Quote]

Yeah!
wuyi8808 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kien17 的回复:]
我调试过了,它真的把string sql="";执行了一次,然后跳到了“下一页”按钮事件里面去了,所以sql永远是“”,愁死我了
[/Quote]

如果是 winform 程序,从你贴出来的代码来看,执行“下一页”按钮事件时,不会把string sql="";执行了一次的。应该是其他地方的问题,这段代码没问题
kien17 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 goga21cn 的回复:]
引用 8 楼 kien17 的回复:

是winform项目。。。谢谢


那这段代码没错.
[/Quote]
我调试过了,它真的把string sql="";执行了一次,然后跳到了“下一页”按钮事件里面去了,所以sql永远是“”,愁死我了
小case 2010-03-26
  • 打赏
  • 举报
回复
先定义
class Class1
{
public static string sql;

}
在需要的地方赋值
Class1.sql ="select * from table where name like '%"+name+"'%";
龙宜坡 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 huangwenquan123 的回复:]

我测试过了
如果没加static的话
C# code
string a="";
protected void Button1_Click(object sender, EventArgs e)
{
a = TextBox1.Text;
Response.Write("<script>alert('" + a + "')</script>")……
[/Quote]

是WinForm
加载更多回复(15)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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