C#链接数据库,推送数据
现在有这么一个小需求。
数据库中有一张表字段为ID,时间....等字段。
有人会想这张表中插入数据。
是否可以Winform简单的展示这张表的数据。能做只要数据库一插入数据,WinForm就读取出来,而不是WinFrom实时刷新再读取呢?
类似,数据库推送给Winform,让Winfrom来执行刷新???
[解决办法]
public void UpdateGrid()
{
using (SqlConnection connection = new SqlConnection(_connStr))
{
using (SqlCommand command = new SqlCommand("select terminal,gun_state FROM aaa", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
list_old = new List<dosoft.Model.GunState>();
SqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
//第一次
var m = new dosoft.Model.GunState();
m.gun_state = int.Parse(dr["gun_state"].ToString());
m.terminal = dr["terminal"].ToString();
list_old.Add(m);
}
dr.Close();
connection.Close();
}
}
}
private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
System.Threading.Thread.Sleep(2000);
Console.WriteLine("dependency_OnChange");
using (SqlConnection connection = new SqlConnection(_connStr))
{
using (SqlCommand command = new SqlCommand("select terminal,gun_state FROM aaa", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
SqlDataReader dr = command.ExecuteReader();
list_new = new List<dosoft.Model.GunState>();
while (dr.Read())
{
var m = new dosoft.Model.GunState();
m.gun_state = int.Parse(dr["gun_state"].ToString());
m.terminal = dr["terminal"].ToString();
list_new.Add(m);
}
dr.Close();
//逻辑判断
for (int i = 0; i < list_new.Count; i++)
{
var a = list_old[i].gun_state;
var b = list_new[i].gun_state;
if (b == 1 && a != 1)
{
// saveImage(list_new[i]);
}
}
list_old = list_new;
connection.Close();
}
}
}