浅析C#如何连接数据库实现查询功能

转自: http://www.educity.cn/develop/1388567.html

C#如何连接数据库实现查询功能?首先要求是进行驱动连接,连接好数据库后,就只剩下对数据库的访问了。查询可以参考一般数据库的查询。

  数据库操作四大步骤

  1、查询:select * from 表名(where 条件)

  2、插入:insert into 表明(字段1,字段2……)values(值1,值2……)

  3、修改:update 表名 set 字段1=值1,字段2=值2 (where 条件)

  4、删除:delete from 表名 (where条件)

  在.NET中,对数据库的访问有两种方式:oledb和sqlclient。两种连接数据库方式的不同之处是:oledb适合访问各种各样的数据库,而sqlclient只适用于sql server数据库,就访问速度而言这两种连接方式自然是sqlclient连接方式速度比较快,而相对也能够用范围来讲则是oledb连接方式较好。下面capucivar将使用oledb连接方式来对数据库进行访问。

  在连接数据库之前需要导两个包:System.Date和System.Date.Oledb。连接数据库就要创建一个连接对象OleDbConnection conn = new OleDbConnection();,然后就要写连接数据库的字符串了:conn.ConnectionString="provider=sqloledb.1;data source=.;initial catalog=dbname;user id=username;pwd=password";连接字符串一共有五部分:1、指明驱动2、指明数据源,即数据库所在的地址3、指定连接那个数据库4、用户名5、密码。接下来就该打开这个连接了:conn.open()。这样就连接好了数据库,剩下的就是对数据库进行访问了。首先来做一个查询,既然是查询,先不管怎么查询,我们知道查询出来的数据一定是个结果集,那么dot-net中的结果集是什么呢?常用的有这样两个:dataTable和dataSet。

  从表面看这两个分别是数据的表和数据的集合。两者的区别是:dataTable就是一个放在内存中存放数据的表,查询出来后若要将结果显示在某个控件上,只需指定数据源为dataTable的对象;而dateSet是表的集合,也就是说dataSet中可以放n个dataTable,查询时可以同时返回两个dataTable,在指定数据源时就要指定是dataSet中的哪个dataTable。比如有一个dataSet对象ds,那么指定数据源时就要这样写:ds.Tables[index]。查询结束之后就要及时关闭连接:conn.close()。

  下面就来做一个登陆界面来熟悉对数据库的查询操作:

  C#如何连接数据库?首先创建数据库capucivar和表users,并在表中添加一行数据:

  
  create database capucivar  
  create table users  
  (  
  uid int primary key identity(1,1),  
  username varchar(100),  
  userpass varchar(100)  
  )  
  insert into users(username,userpass) values('aaa','aaa'

  新建一个解决方案,然后在解决方案里添加项目。因为是与用户交互的图形界面,所以操作与以前有所不同,这次就要选择windows 应用程序。

  在界面的左边是wingdows窗体的控件,如果需要那个控件只需要将它拖放至右边的窗体上即可,最好将控件的name属性也改一下。界面做好之后,如果那个控件需要有一个监听事件,鼠标右击属性,右下角就会出现控件的属性和事件,选中相应的事件后双击直接进入代码编写相应代码就可以了。

  我们拖放两个Lable(标签),两个TextBox(单行文本框)和一个button(按钮),做好一个简单的登陆界面。注意:对于密码框不应该明文显示,应该以“*”或其它的代替,所以要将它的属性passwordchar改为“*”。

  下面写数据库的连接即查询,因为数据库操作是经常要进行的,所以一般习惯将对数据库的连接和操作单独作一个项目:

  
  using System;  
  using System.Collections.Generic;  
  using System.Text;  
  using System.Data;// System.Data和System.Data.OleDb一定要导入  
  using System.Data.OleDb;  
  namespace Db //命名空间  
  {  
  public class ConnDb  
  {  
  OleDbConnection conn = null;//定义连接对象为null  
  public ConnDb()//构造函数  
  {  
  if (conn==null)  
  {  
  conn = new OleDbConnection();  
  conn.ConnectionString="provider=sqloledb.1;data source=.;initial catalog=capucivar;user id=sa;pwd=";  
  }  
  if (conn.State == ConnectionState.Closed)  
  {//如果连接的状态是关闭的话  
  conn.Open();//打开连接  
  }  
  }  
  public DataSet query(string sql)  
  {  
  DataSet ds = new DataSet();//创建dataSet对象  
  OleDbDataAdapter da = new OleDbDataAdapter(sql,conn);//适配器,用于填充dataSet或dataTable  
  da.Fill(ds);//使用Fill()方法填充dataSet  
  connClose();//关闭连接  
  return ds;//返回DataSet  
  }  
  public void connClose()//关闭连接的方法  
  {//先判断连接是否关闭,如果没有关闭就将它关闭  
  if (conn.State == ConnectionState.Open)  
  {  
  conn.Close();//关闭连接  
  } } } } 

  在已经做好的图形用户界面,选中一个控件,鼠标右击属性。右下角找到按钮的点击事件后双击该事件(此处只需要双击按钮)直接进入代码编写相应响应事件代码。完整代码如下:

  
  using System;  
  using System.Collections.Generic;  
  using System.ComponentModel;  
  using System.Data;  
  using System.Drawing;  
  using System.Text;  
  using System.Windows.Forms;  
  namespace login//命名控件  
  {  
  public partial class Form1 : Form  
  {  
  public Form1()  
  {  
  InitializeComponent();  
  }  
  private void login_but_Click(object sender, EventArgs e)//按钮的单击事件  
  {  
  //得到用户输入的用户名和密码  
  string name = this.name_text.Text;  
  string pass = this.pass_text.Text;  
  //写sql语句  
  string sql =string.Format("select * from users where username='{0}' and userpass='{1}'",name,pass);  
  DataSet ds = new Db.ConnDb().query(sql);  
  if (ds.Tables[0].Rows.Count > 0)  
  {// ds.Tables[0].Rows.Count是结果集的行数  
  MessageBox.Show("登陆成功!");  
  }  
  else  
  {  
  MessageBox.Show("登录失败!");  
  } } } } 

  Ctrl+F5执行,先输入正确的“aaa”和“aaa”,执行结果如下:

  然后填入一个错误的,执行结果如下:

  一个简单的从数据库中查询就做好了。至于增删改capucivar将在下一篇文章中详细阐述。

  浅析C#如何连接数据库实现查询功能就介绍到这里。


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在图书管理系统中,Oracle 数据库可以用于存储书籍、读者、借阅记录等数据,以下是一些常见的查询类型及其示例: 1. 一般查询 一般查询适用于简单的数据检索,例如查询图书信息表中所有书籍的信息。示例 SQL 语句如下: ```sql SELECT * FROM book_info; ``` 2. 连接查询 连接查询可以用来查询两个或多个表之间的关联数据,例如查询已借书籍的读者信息。示例 SQL 语句如下: ```sql SELECT reader_info.reader_id, reader_info.reader_name, book_info.book_name, borrow_info.borrow_date FROM reader_info INNER JOIN borrow_info ON reader_info.reader_id = borrow_info.reader_id INNER JOIN book_info ON borrow_info.book_id = book_info.book_id; ``` 上述 SQL 语句使用了 INNER JOIN 连接 borrow_info、reader_info 和 book_info 三个表,根据读者 ID 和书籍 ID 进行关联。 3. 嵌套查询 嵌套查询可以在一个查询中嵌套另一个查询,用于更复杂的数据检索,例如查询借阅次数大于 5 次的读者信息。示例 SQL 语句如下: ```sql SELECT reader_id, reader_name FROM reader_info WHERE reader_id IN ( SELECT reader_id FROM borrow_info GROUP BY reader_id HAVING COUNT(*) > 5 ); ``` 上述 SQL 语句中,内部查询使用了 GROUP BY 和 HAVING 子句,用于计算每个读者借阅的书籍数量。外部查询使用了 WHERE 子句和 IN 运算符,用于筛选借阅次数大于 5 次的读者信息。 4. 集合查询 集合查询可以将多个查询结果合并或去重,例如查询所有借出的书籍的书名和所有未借出的书籍的书名。示例 SQL 语句如下: ```sql SELECT book_name FROM borrow_info INNER JOIN book_info ON borrow_info.book_id = book_info.book_id UNION SELECT book_name FROM book_info WHERE book_id NOT IN ( SELECT book_id FROM borrow_info ); ``` 上述 SQL 语句中,使用 UNION 运算符将两个查询结果合并,用于查询所有借出的书籍的书名和所有未借出的书籍的书名。注意,在第二个查询中使用了 NOT IN 运算符,用于筛选未借出的书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值