您的位置: 网站首页 > 程序开发 > C#程序设计 > 第10章 数据库操作 > 【10.3 与数据库交互】

10.3 与数据库交互

 

单纯与数据库建立连接是没有意义的,建立到数据库的连接的目的就是要对数据库进行操作。本节介绍如何在C#中对数据库进行操作。

10.3.1  使用SqlCommand提交添加数据命令

本小节介绍如何使用SqlCommand类提交对数据的添加数据命令。假设数据库中有一张名为People的表,表中有两列,分别为NameAge

1.目的说明

创建一个Windows控制台应用程序,演示如何向数据库中添加数据。

2.实现步骤

1)创建一个名为DBAdd的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace DBAdd

{

    class Program

    {

        static void Main(string[] args)

        {

            SqlConnection s = new SqlConnection();

 

            string connectString = @"Data Source=bjtu-zhang\SQLEXPRESS;Initial

Catalog=Test;Integrated Security=True;Pooling=False";

            s.ConnectionString = connectString;

 

            try

            {

                s.Open();

 

                Console.WriteLine(s.ServerVersion);

                Console.WriteLine(s.Database);

                Console.WriteLine(s.State);

 

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            string sql = "insert into people values('wang','20')";

           

            SqlCommand sc = new SqlCommand();

            sc.CommandText = sql;

            sc.Connection = s;

 

            try

            {

                sc.ExecuteNonQuery();

                Console.WriteLine("数据添加成功!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            try

            {

                s.Close();

 

                Console.WriteLine("数据库已关闭!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图10-21所示。

4.代码分析

添加数据时,首先要给出添加命令的SQL语句,本例中为如下SQL语句:

string sql = "insert into people values('wang','20')";

将该SQL语句赋值到SqlCommandCommandText属性中,同时需要给出SqlCommand使用的数据库连接,在其Connection中给出,最后执行ExecuteNonQuery命令即可。添加完数据后可以从Visual Studio 2005中查看变化,如图10-22所示。

              

10-21  运行结果                                 10-22  运行结果

选择“显示表数据”命令,如图10-23所示。可以看到程序中添加的数据已经位于表People中。

10-23  运行结果

10.3.2  使用SqlCommand提交修改命令

本小节使用SqlCommand类提交修改命令,将上一小节中添加的数据进行修改。

1.目的说明

创建一个Windows控制台应用程序,演示如何修改数据库中的数据。

2.实现步骤

1)创建一个名为DBUpdate的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace DBUpdate

{

    class Program

    {

        static void Main(string[] args)

        {

            SqlConnection s = new SqlConnection();

 

            string connectString = @"Data Source=bjtu-zhang\SQLEXPRESS;Initial

Catalog=Test;Integrated Security=True;Pooling=False";

            s.ConnectionString = connectString;

 

            try

            {

                s.Open();

 

                Console.WriteLine(s.ServerVersion);

                Console.WriteLine(s.Database);

                Console.WriteLine(s.State);

 

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            string sql = "update people set age = 30 where name = 'wang'";

 

            SqlCommand sc = new SqlCommand();

            sc.CommandText = sql;

            sc.Connection = s;

 

            try

            {

                sc.ExecuteNonQuery();

                Console.WriteLine("数据修改成功!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            try

            {

                s.Close();

 

                Console.WriteLine("数据库已关闭!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

10-24  运行结果

 

            }

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图10-24所示。

4.代码分析

添加数据时,首先要给出添加命令的SQL语句,本例中为如下SQL语句:

string sql = "update people set age = 30 where name = 'wang'";

将该SQL语句赋值到SqlCommandCommandText属性中,同时需要给出SqlCommand使用的数据库连接,在其Connection中给出,最后执行ExecuteNonQuery命令即可。同样,可以查看表数据,如图10-25所示。可以看到,表中的数据已经发生了变化。

10-25  运行结果

10.3.3  使用SqlCommand提交删除命令

本小节使用SqlCommand类提交删除命令,将上一小节中的数据删除。

1.目的说明

创建一个Windows控制台应用程序,演示如何删除数据库中的数据。

2.实现步骤

1)创建一个名为DBDelete的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace DBDelete

{

    class Program

    {

        static void Main(string[] args)

        {

            SqlConnection s = new SqlConnection();

 

            string connectString = @"Data Source=bjtu-zhang\SQLEXPRESS;Initial

Catalog=Test;Integrated Security=True;Pooling=False";

            s.ConnectionString = connectString;

 

            try

            {

                s.Open();

 

                Console.WriteLine(s.ServerVersion);

                Console.WriteLine(s.Database);

                Console.WriteLine(s.State);

 

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            string sql = "delete from people where name = 'wang'";

 

            SqlCommand sc = new SqlCommand();

            sc.CommandText = sql;

            sc.Connection = s;

 

            try

            {

                sc.ExecuteNonQuery();

                Console.WriteLine("数据删除成功!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            try

            {

                s.Close();

 

                Console.WriteLine("数据库已关闭!");

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图10-26所示。

4.代码分析

添加数据时,首先要给出添加命令的SQL语句,本例中为如下SQL语句:

string sql = "delete from people where name = 'wang'";

将该SQL语句赋值到SqlCommandCommandText属性中,同时需要给出SqlCommand使用的数据库连接,在其Connection中给出,最后执行ExecuteNonQuery命令即可。

同样,可以查看表数据,如图10-27所示。可以看到,表中的数据已经被删除。

         

10-26  运行结果                              10-27  运行结果

10.3.4  使用SqlCommand获取查询命令

数据库的强大功能体现在其对大量数据的管理,除了对数据的添加、删除和修改之外,还支持对数据的查询。本小节通过一个实例演示在C#中对数据库中数据的查询功能。首先向数据库中添加部分数据,如图10-28所示。

10-28  添加数据

1.目的说明

创建一个Windows控制台应用程序,演示如何从数据库中查询数据。

2.实现步骤

1)创建一个名为DBSelect的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace DBSelect

{

    class Program

    {

        static void Main(string[] args)

        {

            SqlConnection s = new SqlConnection();

 

            string connectString = @"Data Source=bjtu-zhang\SQLEXPRESS;Initial

Catalog=Test;Integrated Security=True;Pooling=False";

            s.ConnectionString = connectString;

 

            try

            {

                s.Open();

 

                Console.WriteLine(s.ServerVersion);

                Console.WriteLine(s.Database);

                Console.WriteLine(s.State);

 

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            string sql = "select * from people where age = '20'";

 

            SqlCommand sc = new SqlCommand();

            sc.CommandText = sql;

            sc.Connection = s;

 

            try

            {

                SqlDataReader dr = sc.ExecuteReader();

                Console.WriteLine("数据查询成功!");

 

                while (dr.Read())

                {

                    Console.Write(dr[0].ToString());

                    Console.Write("\t");

                    Console.Write(dr[1].ToString());

                    Console.Write("\n");

                }

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

 

            try

            {

                s.Close();

 

                Console.WriteLine("数据库已关闭!");

            }

            catch (Exception e)

10-29  运行结果

 

            {

                Console.WriteLine(e.Message);

            }

        }

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图10-29所示。

4.代码分析

添加数据时,首先要给出添加命令的SQL语句,本例中为如下SQL语句:

string sql = "select * from people where age = '20'";

该语句查询了表PeopleAge20的所有数据。查询时使用了ExecuteReader方法,返回了一个SqlData-

Reader类型的变量,通过使用While循环及其Read方法,循环输出了所有的返回数据。

如将SQL语句修改如下:

string sql="select * from people where age < '50'";

将返回所有Age小于50的所有数据,结果如图10-30所示。

 

 

10-30  运行结果