datagridview绑定失败以及timer刷新数据库的问题

qq_36157162 2017-10-26 09:44:02
private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
{
SqlConnection drcon = new SqlConnection("Data Source=laptop-cl08flf2;Initial Catalog=hospital;Integrated Security=SSPI");
drcon.Open();
string str = "select patient_info.name,age from patient_info,doctor_info,pd_info where patient_info.number = pd_info.number and doctor_info.workid = '"+textBox1.Text+"' and doctor_info.category = pd_info.category and doctor_info.category = patient_info.category and doctor_info.expe = pd_info.expe and doctor_info.expe = patient_info.expe and pd_info.number in(select pd_info.number from pd_info where pd_info.number in(select pd_info.number from pd_info where differ = 'true' and going = 'no') )";
SqlCommand mycon = new SqlCommand(str, drcon);
mycon.ExecuteNonQuery();
SqlDataAdapter ada = new SqlDataAdapter(str, drcon);
DataSet pd = new DataSet();
ada.Fill(pd, str);
this.dataGridView1.DataSource = pd.Tables["pd_info"];
drcon.Close();
}

private void timer1_Tick(object sender, EventArgs e)
{
SqlConnection drcon = new SqlConnection("Data Source=laptop-cl08flf2;Initial Catalog=hospital;Integrated Security=SSPI");
drcon.Open();
string selstr = "select * from pd_info";
SqlCommand mycon = new SqlCommand(selstr, drcon);
mycon.ExecuteNonQuery();
SqlDataAdapter myada = new SqlDataAdapter("select * from pd_info",drcon);
DataSet pd = new DataSet();
myada.Fill(pd, "pd_info");
this.dataGridView1.DataSource = pd.Tables["pd_info"];
drcon.Close();
}

第一个是datagridview的代码
第二个是timer的
我是想datagridview里显示我查找后的结果,这个结果的显示是要在填写工号后自动显示(如图)然后timer里设置让这个datagridview定时查找并显示,不知道我这样写对不对,我刚开始学c#,求大佬求教,能帮我改代码更好
图是我的界面设计,datagridview里显示name和age两列
...全文
321 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大然然 2017-10-27
  • 打赏
  • 举报
回复
其实你的本意是数据库变化了之后前台跟着变,于是你采用timer去查数据库, 那么假设数据库一个月都没有改变,那么你这一个月(时时刻刻)的查询其实都是无用功 你可以去看看 sqldependency 数据库改变后会发通知,你从主动访问变为被动接听,开销会小很多。
易2017 2017-10-27
  • 打赏
  • 举报
回复
是的
引用 5 楼 qq_36157162 的回复:
[quote=引用 2 楼 易2017的回复:]填写工号后显示,你在工号文本框加个keypress事件,判断当按下回车执行数据查询并绑定到datagridview,至于你想定时查询,既然用了adapter就不需要连接,drcon.Open()完全是多余的
那我如果想设置成没点一次button重新查询一次,是不是写在button里就可以了,timer也就不需要了[/quote]
qq_36157162 2017-10-27
  • 打赏
  • 举报
回复
引用 2 楼 易2017的回复:
填写工号后显示,你在工号文本框加个keypress事件,判断当按下回车执行数据查询并绑定到datagridview,至于你想定时查询,既然用了adapter就不需要连接,drcon.Open()完全是多余的
那我如果想设置成没点一次button重新查询一次,是不是写在button里就可以了,timer也就不需要了
xdashewan 2017-10-27
  • 打赏
  • 举报
回复
数据库连接太过平凡,你这样的操作,可以使用两个全局的SqlConnection,在整个form打开时候open,form关闭时才关闭
易2017 2017-10-27
  • 打赏
  • 举报
回复
        public void Select(string sql)
        {
            DataSet ds;
            OleDbDataAdapter adapter = new OleDbDataAdapter();//创建adapter对象

            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb";
            OleDbConnection conn = new OleDbConnection(connString);

            OleDbCommand cmd = new OleDbCommand(sql, conn);

            adapter.SelectCommand = cmd;//设置adapter对象的selectcommand的属性为command

            try
            {
                ds = new DataSet();//创建dataset对象
                adapter.Fill(ds, "cs");
                dataGridView1.DataSource = ds.Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
你可以用这个函数封装一下
易2017 2017-10-27
  • 打赏
  • 举报
回复
填写工号后显示,你在工号文本框加个keypress事件,判断当按下回车执行数据查询并绑定到datagridview,至于你想定时查询,既然用了adapter就不需要连接,drcon.Open()完全是多余的
FainSheeg 2017-10-27
  • 打赏
  • 举报
回复
填写后自动查询别用timer,用textbox的textchanged事件
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 “198个经典C# WinForm实例源码(超赞).zip”是一个极具价值的学习资源库,专为C# WinForm开发而设计。它包含了198个精选的C# WinForm应用实例,旨在帮助开发者深入掌握C#编程和WinForm设计技巧。 这些实例覆盖了多个重要领域:首先是基础控件应用,包括Button、Label、TextBox等基本UI元素的使用,以及它们的事件处理,如单击事件、文本更改事件等。其次,数据绑定与显示部分展示了如何将数据库数据绑定到控件,例如DataGridView用于表格展示,ComboBox用于下拉选择,以及ListView和TreeView的使用。 在对话框交互方面,实例涵盖了OpenFileDialog、SaveFileDialog、MessageBox等对话框的使用,实现文件操作和用户提示功能。**图形绘制与GDI+**部分则利用Graphics类和Pen、Brush对象进行图形绘制,帮助开发者创建自定义窗口外观或实现动态图形效果。 此外,多线程操作通过Thread、BackgroundWorker类实现后台任务处理,避免界面阻塞;文件和注册表操作展示了读写文件、操作注册表的关键代码,这对于应用配置和系统设置管理非常重要。网络通信部分包括HTTP请求和Socket编程,帮助开发者实现简单的客户端-服务器通信。 定时器与计时器应用通过Timer控件实现周期性任务,如定时刷新数据或倒计时。拖放功能部分则通过DragDrop事件实现文件或数据的拖放操作。自定义控件部分帮助开发者继承和扩展已有控件,创建自己的用户控件。 异常处理部分通过实例教授开发者如何捕获和处理运行时错误。状态栏和菜单栏部分则实现了应用程序的状态信息显示和菜单项响应。窗体间的通信部分教授开发者如何在多个

111,120

社区成员

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

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

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