c#实现打开数据库并进行查询,修改等操作

c#连接数据库需要引用一些东西,首先我们引用:using System.Data.OleDb。

其次我们需要拖动一些控件,包括button,combobox,datagridview等。。。这里就不一一说明了。效果图如下

1.能不能自己选择打开某个数据库呢?而不是在代码里面就已经确定我要打开某个数据库了?

首先要写的是下面的这个代码,这个代码是写在form里买的全局变量,因为如果写在某个button的响应事件,就成为了局部变量,以后不能去引用,很麻烦。

string dbname = "";//数据库的名称,带后缀
        string db_con = "";//建立connection是需要提供的版本信息,数据库名称
        string sql = "";//从数据库中查询表格的SQL语句
        OleDbConnection conn = new OleDbConnection();//建立一个数据库连接的类
        DataSet dat = new DataSet();//建立一个内存数据库,用来保存你连接的数据库
        OleDbDataAdapter ad;//建立一个各种类,用来进行数据库和内存的操作关联必须,笔者也不是很理解这些类的作用
        OleDbCommand comd;
        OleDbDataReader read;
        OleDbCommandBuilder bu;
        DataTable students;  

这个代码是写在一个button控件里面的click响应函数里面的,实现连接数据库,并且将其表现在datagridview控件中

 OpenFileDialog of = new OpenFileDialog();
            of.ShowDialog();
            dbname = of.SafeFileName;//open file and get the name of file
            db_con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbname;//fill the datasource with file name
            conn.ConnectionString = db_con;
            conn.Open();
            sql = "SELECT * FROM student";
            ad = new OleDbDataAdapter(sql, conn);
            bu = new OleDbCommandBuilder(ad);
            ad.Fill(dat,"neicun_table");
            students = dat.Tables[0];
            ad.Update(dat, "neicun_table");
            dataGridView1.DataSource = students;

2.如何建立一个combobox,使其实现自动获取数据库的各个字段名称并且显示呢?这样就可以根据条件来筛选出自己想要的数据了?

其实很简单只需要下面的几行代码(此代码也是写在button1控件里面的)就可以获取你数据库的所有字段名称,并且显示到combobox中

 for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
              {
                  comboBox1.Items.Add(this.dataGridView1.Columns[i].HeaderText);
              }

3.还想实现另外一个combobox,当选中combobox1中某个字段时,该combobox自动显示出该字段下面的所有值,用来作为筛选条件。代码写在combobox1中的seleceindexchange事件中,意思是选中的下标状态改变时,执行此事件

这里用到的时datareader类,该类可以读取数据库,调用其中的获取指定列字段名的方法,获得你选择的字段。不过后来笔者发现,有更简单的办法

ad = new OleDbDataAdapter(sql, conn);
            ad.Fill(dat, "neicun_table");
            comd = new OleDbCommand();
            comd.CommandText = sql;
            comd.Connection = conn;
            read = comd.ExecuteReader();
            string col_title = read.GetName(comboBox1.SelectedIndex);
        comboBox2.DataSource = dat;
      comboBox2.DisplayMember = "neicun_table." + col_title;

  

只需要一行代码,就可以实现,如果采用这种办法,则不需要定义全局变量 OleDbCommand comd;OleDbDataReader read;

comboBox2.DataSource = dat;
comboBox2.DisplayMember = "neicun_table." + comboBox1.SelectedItem;

 但是这里有个小小的问题,如果该字段是性别,那么就会出现一些不是很好的情况,你会发现有男女重复的展示,笔者这里没有对此优化,如果大家有好的办法,可以交流一下。

4.那么就到了最后一步了,当我确定了筛选条件之后,如何改变datagridview的值呢,实现同步的更新?

原文地址:https://www.cnblogs.com/qin5429/p/10055908.html

时间: 2024-10-30 12:00:06

c#实现打开数据库并进行查询,修改等操作的相关文章

mysql数据库导入导出 查询 修改表记录

mysql数据导入导出: 导入: 把系统的文件的内容,保存到数据库的表里 导入数据的基本格式:mysql> load data infile "文件名" into table 表名 fields terminated by '分隔符' lines terminated by '\n'; 实例:把系统用户信息保存到hydra01库下的userinfo表里 mysql> create table userinfo(name char(20),password char(1),u

数据库SQList 添加 查询 修改 删除

SQListActivity 1 package com.example.administrator.myapplication.database.Activity; 2 3 import android.content.ContentValues; 4 import android.database.Cursor; 5 import android.database.sqlite.SQLiteDatabase; 6 import android.os.Bundle; 7 import andr

线上mongodb 数据库用户到期时间修改的操作记录

登陆版权数据库,显示"此用户已到期",数据库使用的是mongodb,顾 需要将此用户的到期时间延长. 解决过程: 1)到网站对应tomcat配置里找出等里mongodb的信息(mongodb 的库.登陆用户名.密码.端口) 2)用上面的信息登陆mongodb # mongo 127.0.0.1:27017/fcyym -ufcyym_sa -padmin_hqdrm2012_root 查询这个库下所有的表> show collections 查询相应的表的字段信息> db.

在SqlServer查询分析器里 访问远程数据库 进行数据查询更新等操作(openrowset)

启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 使用完成后,关闭Ad Hoc Distributed Queries: exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec s

yii2.0数据库查询修改等方法

yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all();    此方法返回所有数据: 这些查询出来是对象形式,但是一般转换成数组格式: Test::find()->asArray()->all();     加上asArray()就取得数组形式的数据了,下面的自行添加. Test::findOne($id);   此方法返回 主键 id=1  的一条数据(举个例子): 条件查询:wher

数据库 、 语句查询、函数

创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database databaseName go Create DATABASE databasename on primary-- 默认就属于primary文件组,可省略 ( /*--数据文件的具体描述--*/ name='databasename_data',-- 主数据文件的逻辑名称 filename=''所存

MySQL学习笔记一打开数据库操作

打开数据库 1.cmd窗口中输入mysql -uroot -p 2.接着提示输入密码 3.如果MySQL服务器没有打开会报错,这时可以使用以下命令来打开服务器 服务器没有开启错误提示:ERROR 2003 (HY000): Can't connect to mysql server on' localhost' (10061) net start mysql57  启动服务 net stop mysql57  停止服务 在服务设置里面手动打开 4.配置字符格式,在my.ini文本中找到下面两行,

mysql基础篇 - 数据库及表的修改和删除

基础篇 - 数据库及表的修改和删除 修改和删除 一.实验简介 本节实验中,我们将学习并实践如何对数据库的内容做修改,删除,重命名等操作. 二.实验准备 在正式开始本实验内容之前,需要先下载相关代码. 该代码可以新建两个数据库,分别名为 test_01 和mysql_shiyan ,并在 mysql_shiyan 数据库中建 4 个表(department,employee,project,table_1),然后向其中插入数据. 具体操作如下,首先输入命令进入 /home/shiyanlou/De

【SSH项目实战05】完成数据库的级联查询和分页

上一节我们完成了EasyUI菜单的实现.这一节我们主要来写一下CategoryServiceImpl实现类,完成数据库的级联查询.一般项目从后往前做,先做service(我们没有抽取Dao,最后再抽取),做完了再做上面层. 在写之前,先看一下数据库中的表的情况: drop database if exists shop; /*创建数据库,并设置编码*/ create database shop default character set utf8; use shop; /*删除管理员表*/ dr