to 当你手淫你会想起谁:我们经理精通一套二次开发的软件,很NB,不NB人家当不了经理。让用线程做,就是想让客户觉得东西NB;to 豆豆:你是高手阿,写的东西偶都看不懂~~~~开发B/S好好的突然给了我一个这个任务,晕死我了~~~~谢谢大家,我再调试一下,一会儿结贴给分 ^_^
关键是fill的问题...你每次填充的都是ds1这个TABLE... da.Fill(ds,"ds1");而且填充完后又没有把ds清空...最好是这样吧...using System.Threading;while(true) { SqlDataAdapter da=new SqlDataAdapter("select * from z_user where userpower=1",conn); da.Fill(ds,"ds1"); if (ds.Tables["ds1"].Rows.Count==0) { MessageBox.Show("没有数据"); } else { MessageBox.Show("找到"+ds.Tables["ds1"].Rows.Count+"条数据"); } //操作数据库完成后程序休息5分钟 Thread.Sleep(5*1000); ds.Clear(); }而且,如果做winform,最好是做一个独立的线程来运行你的代码,以免窗体无响应...
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Threading;namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Thread dosql = new Thread(new ThreadStart(doDataBase)); dosql.IsBackground = true; dosql.Start(); } private void doDataBase() { string connstr = ""; SqlConnection conn = new SqlConnection(connstr); DataSet ds = new DataSet(); while (true) { SqlDataAdapter da = new SqlDataAdapter("select * from z_user where userpower=1", conn); da.Fill(ds, "ds1"); if (ds.Tables["ds1"].Rows.Count == 0) { MessageBox.Show("没有数据"); } else { MessageBox.Show("找到" + ds.Tables["ds1"].Rows.Count + "条数据"); } //操作数据库完成后程序休息5分钟 Thread.Sleep(5 * 1000); ds.Clear(); } } } }
不论timer控件还是什么其他的,只要能实现同时给个小例子最好了!
{
//访问数据库
...
... //操作数据库完成后程序休息5分钟
Thread.Sleep(5*1000);
}
miqier(米琪儿) 你好,我刚学c#下的winform编程第二天,你的程序我还是看不懂啊,
能否讲的详细些呢?谢谢谢谢~~~~~
比如数据库中有两条数据是符合条件的,第一次MessageBox弹出的窗口提示是正确的:找到2条数据;但是第二次弹出的时候就变成了“找到4条数据”,第三次弹出就成了“找到6条数据”,依次类推,这是为什么啊~~???private void timer1_Tick(object sender, System.EventArgs e)
{
SqlDataAdapter da=new SqlDataAdapter("select * from z_user where userpower=1",conn);
da.Fill(ds,"ds1");
if (ds.Tables["ds1"].Rows.Count==0)
{
MessageBox.Show("没有数据");
}
else
{
MessageBox.Show("找到"+ds.Tables["ds1"].Rows.Count+"条数据");
}
}
{
SqlDataAdapter da=new SqlDataAdapter("select * from z_user where userpower=1",conn);
da.Fill(ds,"ds1");
if (ds.Tables["ds1"].Rows.Count==0)
{
MessageBox.Show("没有数据");
}
else
{
MessageBox.Show("找到"+ds.Tables["ds1"].Rows.Count+"条数据");
} //操作数据库完成后程序休息5分钟
Thread.Sleep(5*1000);
}
一个Timer就行了,如果访问数据库量大要执行很久再用thread
没事整那么复杂干什么
da.Fill(ds,"ds1");而且填充完后又没有把ds清空...最好是这样吧...using System.Threading;while(true)
{
SqlDataAdapter da=new SqlDataAdapter("select * from z_user where userpower=1",conn);
da.Fill(ds,"ds1");
if (ds.Tables["ds1"].Rows.Count==0)
{
MessageBox.Show("没有数据");
}
else
{
MessageBox.Show("找到"+ds.Tables["ds1"].Rows.Count+"条数据");
} //操作数据库完成后程序休息5分钟
Thread.Sleep(5*1000);
ds.Clear();
}而且,如果做winform,最好是做一个独立的线程来运行你的代码,以免窗体无响应...
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Threading;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Thread dosql = new Thread(new ThreadStart(doDataBase));
dosql.IsBackground = true;
dosql.Start();
}
private void doDataBase()
{
string connstr = "";
SqlConnection conn = new SqlConnection(connstr);
DataSet ds = new DataSet();
while (true)
{
SqlDataAdapter da = new SqlDataAdapter("select * from z_user where userpower=1", conn);
da.Fill(ds, "ds1");
if (ds.Tables["ds1"].Rows.Count == 0)
{
MessageBox.Show("没有数据");
}
else
{
MessageBox.Show("找到" + ds.Tables["ds1"].Rows.Count + "条数据");
} //操作数据库完成后程序休息5分钟
Thread.Sleep(5 * 1000);
ds.Clear(); }
}
}
}
int cnt = (int)cmd.ExecuteScalar();
你觉得这个是不是能满足一下?
-----------------------------------
你现在对.Net了解不深可能会觉得他很NB,等你到了一定水平后可能就不那么认为了让客户认为NB,这个我是最无奈了,艾.客户懂什么叫线程么...
同意一个
private void timer1_Tick(object sender, System.EventArgs e)
{
string sql="select count(id) from z_user where userpower=1";
SqlCommand cmd=new SqlCommand(sql,conn);
cmd.Connection.Close();//打开数据连结前先关掉连结,否则运行程序时老是提示“数据库联接已经打开”,这个是我想的歪点子,不知道是否好
cmd.Connection.Open();
int cnt = (int)cmd.ExecuteScalar();
if (cnt==0)
{
MessageBox.Show("没有数据");
}
else
{
MessageBox.Show(cnt.ToString());
}
}