C#写QQ通讯录

增删改查功能设计思路:

  • 增加功能:
//获取对应的值
            string name = textname.Text;//姓名
            string phone = textphone.Text;//手机号
            string address = textaddress.Text;//地址
            string connStr = "Data Source=花伤情犹在;Initial Catalog=AddressList;Integrated Security=True";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();//打开数据库
            if (conn.State == ConnectionState.Open)//如果数据库是打开状态
            {
    
    
                //访问数据
                string sql = "insert into Linkinfo values ('"+name+"','"+phone+"','"+address+"')";
                SqlCommand command = new SqlCommand(sql,conn);
                int num = command.ExecuteNonQuery();
                if (num > 0)
                {
    
    
                    MessageBox.Show("新增成功");
                }
                else
                {
    
    
                    MessageBox.Show("新增失败");
                }
                conn.Close();
            }

name,phone,address三个变量用于接收(姓名,手机号,地址)

ExecuteNonQuery执行一个SqlCommand,该命令返回受操作影响的行数,,但对于其他操作,如数据库的操作结构,如果返回-1操作成功时,这种情况与我们平常的思维方式有点差距所以应该注意了。

简单意味着使用SQL语句创建数据库、创建数据表等。数据库结构上的某些操作最好不要使用大于0的值来判断操作是否成功。

这里name,phone,address三个变量负责接收了三条数据添加到数据库中,需要注意的是ID文本框其实设置的是禁止输入的,因为在数据库中ID列设为的是主键,属性列里面也要设置标识规范,选择是
在这里插入图片描述
在这里插入图片描述

下面是添加前与添加后的对比
在这里插入图片描述

执行添加语句:
在这里插入图片描述

使用查询语句看一下:
在这里插入图片描述

消息返回:1 行受影响(这里1即是返回值)

int num = command.ExecuteNonQuery();
                if (num > 0)
                {
    
    
                    MessageBox.Show("新增成功");
                }
                else
                {
    
    
                    MessageBox.Show("新增失败");
                }

所以这里num等于ExecuteNonQuery()方法的返回值,如果添加成功返回值肯定为1
所以下面的判断语句就是如果num>0则以窗体形式弹出新增成功,否则就是新增失败。

在这里插入图片描述

以上功能都限于文本框和新增按钮

在这里插入图片描述

这里的取消按钮还需要添加一些清空文本框的功能:

 //清空值
            textname.Text = "";
            textphone.Text = "";
            textaddress.Text = "";

以上就是添加数据的功能

  • 删除功能:

先看一下我设计的删除界面:
在这里插入图片描述

//获取对应的值
            string id= shanchuid.Text;//ID
            string connStr = "Data Source=花伤情犹在;Initial Catalog=AddressList;Integrated Security=True";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();//打开数据库
            if (conn.State == ConnectionState.Open)//如果数据库是打开状态
            {
    
    
                //访问数据
                string sql = "delete Linkinfo where linkid='"+id+"'";
                SqlCommand command = new SqlCommand(sql, conn);
                int num = command.ExecuteNonQuery();
                if (num > 0)
                {
    
    
                    MessageBox.Show("删除成功");
                }
                else
                {
    
    
                    MessageBox.Show("删除失败");
                }
                conn.Close();
            }

string id= shanchuid.Text;(首先获取文本框的ID值,把它赋值给id)
delete Linkinfo where linkid=’"+id+"’(这就一条普通的Sql Server删除语句,里面是删除条件,如果条件满足,就会删除那一行的数据,删除条件的参数用id代替)
这样就能实现你想删除哪一行数据就删哪一行
ExecuteNonQuery()方法仍然是像上面添加数据一样的,当你执行删除语句后会有返回值
在这里插入图片描述

删除后会有返回值,因为只删了一行,返回值肯定为1
在这里插入图片描述

执行删除语句后

再次查询
在这里插入图片描述

可以看到刚才那一列已经被删除
所以这段判断语句:

int num = command.ExecuteNonQuery();
                if (num > 0)
                {
    
    
                    MessageBox.Show("删除成功");
                }
                else
                {
    
    
                    MessageBox.Show("删除失败");
                }
                conn.Close();
            }

如果>0肯定就是执行成功了,这里以窗体形式提醒删除成功
否则就以窗体形式提醒删除失败

以上就是删除功能的实现

  • 修改功能:

还是先看一下我设计的窗体界面:
在这里插入图片描述

这里可以看到修改的功能和添加功能几乎都是一样的,但是有一点不同是,修改功能可以输入ID,而添加功能里面ID是不可以输入的,因为系统会默认分配的

 //获取对应的值
            string id = one.Text;//ID
            string name = two.Text;//姓名
            string phone = three.Text;//手机号
            string address = four.Text;//地址
            string connStr = "Data Source=花伤情犹在;Initial Catalog=AddressList;Integrated Security=True";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();//打开数据库
            if (conn.State == ConnectionState.Open)//如果数据库是打开状态
            {
    
    
                //访问数据
                string sql = string.Format("update Linkinfo set linkname='{0}',linkphone='{1}',address='{2}' where linkid='{3}'",name,phone,address,id);
                SqlCommand command = new SqlCommand(sql, conn);
                int num = command.ExecuteNonQuery();
                if (num > 0)
                {
    
    
                    MessageBox.Show("修改成功");
                }
                else
                {
    
    
                    MessageBox.Show("修改失败");
                }
                conn.Close();

这里id,name,phone,address四个变量负责接收id,姓名,手机号,地址

string sql = string.Format("update Linkinfo set linkname='{0}',linkphone='{1}',address='{2}' where linkid='{3}'",name,phone,address,id);

这个sql语句需要用到string.Format()转义
至于转义的讲解我画了一张图来解释:
在这里插入图片描述

int num = command.ExecuteNonQuery();
              if (num > 0)
              {
    
    
                  MessageBox.Show("修改成功");
              }
              else
              {
    
    
                  MessageBox.Show("修改失败");
              }
              conn.Close();

这个判断就不多说了,也是ExecuteNonQuery()方法会有返回值,因为你只修改了一行的数据,如果成功肯定返回1,所以条件判断设为大于1就是修改成功,否则就失败。

然后这些功能都限于文本框和修改按钮上

最后要在取消按钮上添加一下清除文本框内容的功能 以上就是修改功能的实现

  • 查询功能:

在这里插入图片描述

这个查询功能我直接设计在了主界面
对于这个查询功能我主要用到2种查询方式

  1. 【第一种是查询所有数据】
  2. 【第二种是模糊查询】
 string sousuo = textxm.Text;//文本框输入的内容
            string sql;
            if (sousuo == "")//如果搜索栏为空
            {
    
    
                sql = "select * from Linkinfo";

            }
            else
            {
    
    
                sql = string.Format("select * from Linkinfo where linkname like '%{0}%'",sousuo);
            }

对于这两种查询方式我做了一个判断,如果文本框里面什么都不输入,那我的sql语句会被赋值为查询所有数据的语句,如果有内容,就会把我的sql语句赋值为模糊搜索

然后就是利用Datareader:

qlDataReader,Read()方法可以读取下一条记录, 利用while循环重复指令,直到全部记录读取完成

SqlDataReader dataReader = command.ExecuteReader();//select ExecuteReader
while (dataReader.Read())//dataReader.Read()==true表示当前下标有记录
                {
    
    
                    //遍历数据库内数据
                    content = content + dataReader["linkid"] + "\t" + "\t" + dataReader["linkname"] + "\t" + "\t" + dataReader["linkphone"] + "\t" + dataReader["address"] + "\r"+"\n";
                }

最后把遍历的所有内容输出到主界面TextBox上

在这里插入图片描述

TextBox要设置为ReadOnly为True给它设置为只读

以上就是整个QQ通讯录增删改查设计思路

猜你喜欢

转载自blog.csdn.net/qq_31762741/article/details/110749263