A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ADO.NET通过封装一些对象来实现C#与数据库的连接,其实就是一个桥梁。
下面先通过SQL Server来看ADO.NET是怎么样具体连接数据库的。
首先看一下在Visual Studio中创建数据库(Visual Studio内置一个数据库服务器)
在视图上打开服务器资源管理器,在Visual Studio左边会看到

右键数据库连接,创建数据库

其中的“.”代表本地服务器,新创建的数据名字PersonDB,创建一个人Persons表,三个字段ID整形自动增长为主键,一个PersonName,nvarchar(15),存储人的姓名,PersonAge整形存储人的年纪。好了表创建好了,接下来就看看怎样把它同程序进行连接,来实现数据库的增删改查。
创建一个windowForm程序,界面如下:

我们先来实现添加操作,首先引用命名空间:using System.Data.SqlClient;
首先先来连接数据库,通过SqlConnection创建连接对象。

  • SqlConnection con = new SqlConnection();//创建连接对象
要想连接数据库,首先要知道你是要连接哪一个服务器,数据库名称等等。

  • con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";
  • //分别表示服务器名称、数据库名称、登录用户名及密码
接下来创建sql命令对象:
  • SqlCommand cmd = con.CreateCommand();//sql命令对象,表示要对sql数据库执行一个sql语句  
  • cmd.CommandText = "insert into persons(personname,personage) values(@name,@age)";
  • //sql语句@name,@age表示两个参数  
  • cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = textBox1.Text;
  • //给参数赋值,并指定类型  
  • cmd.Parameters.Add("@age", SqlDbType.Int).Value = textBox2.Text;  
  • con.Open();//打开连接  
  • cmd.ExecuteNonQuery();
  • //执行不是查询的sql语句  
  • MessageBox.Show("插入成功!");
打开数据库连接一定要记得关闭连接:
  • catch (Exception ex)//由于sql语句对半全角很敏感,捕捉异常  
  • {  
  • MessageBox.Show(ex.Message);  
  • }  
  • finally  
  • {  
  • con.Close();//不管打开成功还是失败,都能关闭连接  
  • }
好了,到这一步插入操作做完了,接下来看一下能不能往表中插入数据。

点击添加,我们去Persons表中看一下有没有成功插入数据

我们看到“张三”被成功添加进去了,我们再来多添加几条数据。
接下来看一下查询操作怎么做,其实和插入操作没多大区别,只是多了一个SqlDataReader读者对象:下面来看一下源代码:

  • try  
  • {  
  • con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";
  • //分别表示服务器名称、数据库名称、登录用户名及密码  
  • SqlCommand cmd = con.CreateCommand();  
  • cmd.CommandText = "select id,personname,personage from persons";
  • //查询所有  
  • con.Open();  
  • SqlDataReader dr = cmd.ExecuteReader();//提供一种从 SQL Server 数据库读取行的只进流的方式  
  • listBox1.Items.Clear();//清除listbox数据  
  • comboBox1.Items.Clear();//清除combox数据  
  • while (dr.Read())//一行一行读取数据,返回值是bool类型  
  • {  
  • listBox1.Items.Add("姓名:"+dr.GetValue(1).ToString() + " 年龄:"+dr.GetValue(2).ToString());  
  • comboBox1.Items.Add(dr.GetValue(0));//把ID放到combox中,方便删除及修改  
  • }  
  • dr.Close();//关闭读取流操作  
  • }  
  • catch (Exception ex)  
  • {  
  • MessageBox.Show(ex.Message);  
  • }  
  • finally  
  • {  
  • con.Close();  
  • }
来看一下查询结果:
接下来在来实现删除操作,和插入几乎一样,先从数据库中查询出所有数据,获得它们的ID(都放到combox里面了)
下面看一下具体实现:
  • try  
  • {  
  • con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";  
  • SqlCommand cmd = con.CreateCommand();  
  • con.Open();  
  • cmd.CommandText = "delete persons where id=@id";//删除语句,已ID为条件删除  
  • cmd.Parameters.Add("@id", SqlDbType.Int).Value =comboBox1.Text;  
  • cmd.ExecuteNonQuery();  
  • }  
  • catch (Exception ex)  
  • {  
  • MessageBox.Show(ex.Message);  
  • }  
  • finally  
  • {  
  • con.Close();  
  • }
先查询,
选择删除ID,
点击删除,再来查询一下

我们看到朱重八被删除了。
最后来做修改,这个比较麻烦,首先要修获得要修改的数据,先获得所有数据,在通过ID来实现查询当个数据,然后在确定修改
看修改查询代码:
  • try  
  • {  
  • con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";  
  • SqlCommand cmd = con.CreateCommand();  
  • cmd.CommandText = "select personname,personage from persons where id=@id";  
  • cmd.Parameters.Add("@id",SqlDbType.Int).Value = comboBox1.Text;  
  • con.Open();  
  • SqlDataReader dr = cmd.ExecuteReader();  
  • dr.Read();//因为只读一条数据,就不用while循环  
  • textBox1.Text = dr.GetValue(0).ToString();  
  • textBox2.Text = dr.GetValue(1).ToString();  
  • dr.Close();  
  • }  
  • catch (Exception ex)  
  • {  
  • MessageBox.Show(ex.Message);  
  • }  
  • finally  
  • {  
  • con.Close();  
  • }
再来看一下确定修改代码:
  • try  
  • {  
  • con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";  
  • SqlCommand cmd = con.CreateCommand();  
  • con.Open();  
  • cmd.CommandText = "update persons set personname=@name,personage=@age where id=@id";  
  • cmd.Parameters.Add("@id", SqlDbType.Int).Value = comboBox1.Text;  
  • cmd.Parameters.Add("@name",SqlDbType.NVarChar).Value=textBox1.Text;  
  • cmd.Parameters.Add("@age", SqlDbType.NVarChar).Value = textBox2.Text;  
  • cmd.ExecuteNonQuery();  
  • }  
  • catch (Exception ex)  
  • {  
  • MessageBox.Show(ex.Message);  
  • }  
  • finally  
  • {  
  • con.Close();  
  • }
好了,我们先查询全部信息,在通过ID获得修改信息

把名字改成,七匹马,确定修改,再来查询一下是否修改成功

现在可以看到修改成功了。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

4 个回复

正序浏览
看样子,不错喔
回复 使用道具 举报
4.cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = textBox1.Text;
这个地方好像写的过时了 ,楼主你看这样写会不会好点

cmd.Parameters.Add(new SqlParameter("name",textBox1.Text));

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
对数据库表的操作代码框架写的很严谨,值得学习!
try  
{  
    //对数据库表的操作代码
}  
catch (Exception ex)  
{  MessageBox.Show(ex.Message); }  
finally  
{  con.Close();  }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
它囊括了增、删、改、查 。很基础。{:2_41:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马