前端界面操作数据表(知识点描述,思维导图,示例代码,效果截图)

前端界面操作数据表,主要是是指对SQL数据表进行增删改查操作。

操作平台:C#2008+SQL

一、思维导图:

二、知识点介绍

1.利用前端界面对数据库进行操作,最关键的一点就是实现前端界面与数据库的连接。

数据库的连接可以通过设置,也可以直接用代码连接。我们建议用代码连接。代码连接的话,是指连接字符串。如下为连接字符串的示例代码:(以windows登录为例子)

SqlConnection sqlConnection = new SqlConnection();                  //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(Local);Database=数据库名称;Integrated Security=sspi"; //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            sqlConnection.Open();                                               //打开SQL连接;
            MessageBox.Show                                                     //在消息框中显示;
                ("连接状态:" + sqlConnection.State.ToString()                  //消息框消息内容;
                + "\n工作站标识:" + sqlConnection.WorkstationId
                + "\n服务器地址:" + sqlConnection.DataSource
                + "\n服务器版本:" + sqlConnection.ServerVersion
                + "\n数据库名称:" + sqlConnection.Database
                + "\n\n(单击【确定】后将关闭SQL连接)");
            sqlConnection.Close();                                              //关闭SQL连接;
            MessageBox.Show                                                     //在消息框中显示;
                ("连接状态:" + sqlConnection.State.ToString());

2.完成了最开始的数据库连接后接下来就是对数据库进行操作了。

操作的话我们分为四个部分,分别是增加,删除,修改和查找,他们有一个共同点就是都可以用DataGirdView进行直接操作。实现增删改查的过程中,要利用控件进行辅助,并结合相关数据库语句。

c#是通过@加变量名传值,通过AddWithValue方法赋值。

增加

  • 数据表

    • 使用DataGridView控件
  • 命令按钮
    • 写入

      • 调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
    • 异常
      • 调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;捕捉SQL异常;若SQL异常编号为2627,则违反主键/唯一约束,即插入重复值;
    • 存储过程
      • 调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;指定SQL命令的命令文本;命令文本为存储过程名称;SQL命令的类型设为存储过程  
  • 删除

    • DateGridView控件
  • 更新
    • 记录

      • 调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;调用数据阅读器的方法GetOrdinal获取各列相应的索引值;
    • 使用DataGridView控件
  • 查找
    • 记录

      • 调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;调用数据阅读器的方法GetOrdinal获取各列相应的索引值;
    • 数据表
      • 借助DataGridView
    • 命令按钮
      • 查询标量

        • 调用SQL命令的方法ExecuteScalar来执行命令,并接受单个结果
      • 参数
        • 直接调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值;通过参数名称访问SQL参数
      • 参数方向
        • 保存与所输用户号相应的行计数,并从相应的输出参数值中获得行计数

三、代码示例&运行截图

增加&查询:示例(注册向管理员表中增加,登录则为从表中查询)

登录(查询)

SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=ZXYY;Integrated Security=sspi";                         //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = sqlConnection.CreateCommand();
            SqlParameter sqlParameter = new SqlParameter(); //调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;
            if (radobtn_amdin.Checked == true)
            {
                sqlCommand.CommandText =
                   "SELECT COUNT(1) FROM 管理员 WHERE 帐号[email protected]帐号 AND 密码=HASHBYTES(‘MD5‘,@密码);";   //指定SQL命令的命令文本;命令文本包含参数;
                #region SQL参数用法1
                //声明并实例化SQL参数;
                sqlParameter.ParameterName = "@帐号";                                                         //设置SQL参数的名称;
                sqlParameter.Value = this.textbxid.Text.Trim();                                           //设置SQL参数的长度;
                sqlParameter.SqlDbType = SqlDbType.Char;                                                    //设置SQL参数对应的SQL Server数据类型;
                sqlParameter.Size = 10;                                                                     //设置SQL参数的长度;
                sqlCommand.Parameters.Add(sqlParameter);                                                    //向SQL命令的参数集合添加SQL参数;
                #endregion
                #region SQL参数用法2
                sqlCommand.Parameters.AddWithValue("@密码", this.textbxpsw.Text.Trim());             //直接调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值;
                sqlCommand.Parameters["@密码"].SqlDbType = SqlDbType.VarChar;                           //通过参数名称访问SQL参数,并将密码参数的类型设为变长字符串;
                //SQL参数能自动识别类型;若参数值为字符串,则类型自动设为NVARCHAR,且可在执行时自动转换;但对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;
                #endregion
            }
                if (radobon_doctor.Checked == true)
                {
                    sqlCommand.CommandText =
                   "SELECT COUNT(1) FROM 医生 WHERE 工号[email protected]工号 AND 密码=HASHBYTES(‘MD5‘,@密码);";   //指定SQL命令的命令文本;命令文本包含参数;
                    #region SQL参数用法1
                    //声明并实例化SQL参数;
                    sqlParameter.ParameterName = "@工号";                                                         //设置SQL参数的名称;
                    sqlParameter.Value = this.textbxid.Text.Trim();                                           //设置SQL参数的长度;
                    sqlParameter.SqlDbType = SqlDbType.Char;                                                    //设置SQL参数对应的SQL Server数据类型;
                    sqlParameter.Size = 10;                                                                     //设置SQL参数的长度;
                    sqlCommand.Parameters.Add(sqlParameter);                                                    //向SQL命令的参数集合添加SQL参数;
                    #endregion
                    #region SQL参数用法2
                    sqlCommand.Parameters.AddWithValue("@密码", this.textbxpsw.Text.Trim());             //直接调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值;
                    sqlCommand.Parameters["@密码"].SqlDbType = SqlDbType.VarChar;                           //通过参数名称访问SQL参数,并将密码参数的类型设为变长字符串;
                    //SQL参数能自动识别类型;若参数值为字符串,则类型自动设为NVARCHAR,且可在执行时自动转换;但对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;
                    #endregion
                }
                sqlConnection.Open();                                                                       //打开SQL连接;
                int rowCount = (int)sqlCommand.ExecuteScalar();                                             //调用SQL命令的方法ExecuteScalar来执行命令,并接受单个结果(即标量);
                sqlConnection.Close();                                                                      //关闭SQL连接;
                if (rowCount == 1)                                                                          //若查得所输用户号相应的1行记录;
                {
                    MessageBox.Show("登录成功。");
                    this.textbxid.Text = "";
                    this.textbxpsw.Text = "";//显示正确提示;
                    frm_kslist a=new frm_kslist();
                    a.Show ();
                }
                else                                                                                        //否则;
                {
                    MessageBox.Show("用户号/密码有误,请重新输入!");                                       //显示错误提示;
                    this.textbxpsw.Focus();                                                              //密码文本框获得焦点;
                    this.textbxpsw.SelectAll();                                                          //密码文本框内所有文本被选中;
                }

  增加(注册)

if (this.textbxid.Text.Trim() == "")                                                      //若用户号文本框为空;
            {
                MessageBox.Show("用户号不能为空!");                                                    //给出错误提示;
                this.textbxid.Focus();                                                                //用户号文本框获得焦点;
                return;                                                                                 //返回;
            }
            if (this.textbxpsw.Text.Trim() == "")                                                    //若密码文本框为空;
            {
                MessageBox.Show("密码不能为空!");                                                      //给出错误提示;
                this.textbxpsw.Focus();                                                              //密码文本框获得焦点;
                return;                                                                                 //返回;
            }
            SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=ZXYY;Integrated Security=sspi";                         //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = sqlConnection.CreateCommand();
            if (radobtn_amdin.Checked == true)
            {//调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;
                sqlCommand.CommandText =
                    "INSERT 管理员 (帐号,密码) VALUES(@帐号,HASHBYTES(‘MD5‘,@密码));";                 //指定SQL命令的命令文本;命令文本包含参数;
                sqlCommand.Parameters.AddWithValue("帐号", this.textbxid.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值;
                sqlCommand.Parameters.AddWithValue("密码", this.textbxpsw.Text.Trim());
                sqlCommand.Parameters["密码"].SqlDbType = SqlDbType.VarChar;
            }
            if (radobon_doctor.Checked ==true )
            {//调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;
                sqlCommand.CommandText =
                    "INSERT 医生 (工号,密码) VALUES(@工号,HASHBYTES(‘MD5‘,@密码));";                 //指定SQL命令的命令文本;命令文本包含参数;
                sqlCommand.Parameters.AddWithValue("工号", this.textbxid.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值;
                sqlCommand.Parameters.AddWithValue("密码", this.textbxpsw.Text.Trim());
                sqlCommand.Parameters["密码"].SqlDbType = SqlDbType.VarChar;
            }  //将密码参数的类型设为变长字符串;
                //SQL参数自动识别类型;若参数值为字符串,则类型自动设为NVARCHAR,且可在执行时自动转换;但对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;
                int rowAffected = 0;                                                                        //声明整型变量,用于保存受影响行数;
                string message = "";                                                                        //声明字符串变量,用于保存消息;
                try                                                                                         //尝试;
                {
                    sqlConnection.Open();                                                                   //打开SQL连接;
                    rowAffected = sqlCommand.ExecuteNonQuery();                                             //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
                }
                catch (SqlException sqlEx)                                                                  //捕捉SQL异常;
                {
                    if (sqlEx.Number == 2627)                                                               //若SQL异常编号为2627,则违反主键/唯一约束,即插入重复值;
                    {
                        message = "您注册的用户号已存在,请重新输入!";
                        this.textbxid.Text = "";
                        this.textbxpsw.Text = "";//给出合适的错误提示;
                    }
                    else                                                                                    //否则;
                    {
                        message = "注册失败!";                                                             //给出一般错误提示;
                    }
                }
            finally                                                                                     //结束;
                {
                    sqlConnection.Close();                                                                  //关闭SQL连接;
                }
                if (rowAffected == 1)                                                                       //若成功写入1行记录;
                {
                    message = "注册成功。";
                    this.textbxid.Text = "";
                    this.textbxpsw.Text = "";//给出正确提示;
                }
                MessageBox.Show(message);
                //显示提示;

  运行结果

更改:

SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText =                                                                        //指定SQL命令的命令文本;
                "UPDATE tb_Student"
                + " SET [email protected],[email protected],[email protected],[email protected],[email protected]"
                + " WHERE [email protected];";
            sqlCommand.Parameters.AddWithValue("@Name", this.txb_Name.Text.Trim());                         //向SQL命令的参数集合添加参数的名称、值;
            sqlCommand.Parameters.AddWithValue("@Gender", this.rdb_Male.Checked);
            sqlCommand.Parameters.AddWithValue("@BirthDate", this.dtp_BirthDate.Value);
            sqlCommand.Parameters.AddWithValue("@ClassNo", (int)this.cmb_Class.SelectedValue);
            sqlCommand.Parameters.AddWithValue("@Speciality", this.txb_Speciality.Text.Trim());
            sqlCommand.Parameters.AddWithValue("@No", "3120707001");
            sqlConnection.Open();                                                                           //打开SQL连接;
            int rowAffected = sqlCommand.ExecuteNonQuery();                                                 //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            MessageBox.Show("更新" + rowAffected.ToString() + "行。");

  

接下来对DataGrideView的增删改查内容进行介绍:

点击提交,实现增删改查的功能:

SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand insertCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于插入记录;
            insertCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;
            insertCommand.CommandText =                                                                     //指定SQL命令的命令文本;
                "INSERT tb_Student"
                + "(No,Name,Gender,BirthDate,Class,Speciality)"
                + " VALUES(@No,@Name,@Gender,@BirthDate,@Class,@Speciality);";
            insertCommand.Parameters.Add("@No", SqlDbType.Char, 10, "No");                                  //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
            insertCommand.Parameters.Add("@Name", SqlDbType.VarChar, 0, "Name");
            insertCommand.Parameters.Add("@Gender", SqlDbType.VarChar, 0, "Gender");
            insertCommand.Parameters.Add("@BirthDate", SqlDbType.VarChar, 0, "BirthDate");
            insertCommand.Parameters.Add("@Class", SqlDbType.VarChar, 0, "Class");
            insertCommand.Parameters.Add("@Speciality", SqlDbType.VarChar, 0, "Speciality");
            SqlCommand updateCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于更新记录;
            updateCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;
            updateCommand.CommandText =                                                                     //指定SQL命令的命令文本;
                "UPDATE tb_Student"
                + " SET [email protected],[email protected],[email protected],[email protected],[email protected],[email protected]"
                + " WHERE [email protected];";
            updateCommand.Parameters.Add("@NewNo", SqlDbType.Char, 10, "No");                               //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
            updateCommand.Parameters.Add("@Name",SqlDbType.VarChar,0,"Name");
            updateCommand.Parameters.Add("@Gender", SqlDbType.VarChar, 0, "Gender");
            updateCommand.Parameters.Add("@BirthDate", SqlDbType.VarChar, 0, "BirthDate");
            updateCommand.Parameters.Add("@Class", SqlDbType.VarChar, 0, "Class");
            updateCommand.Parameters.Add("@Speciality", SqlDbType.VarChar, 0, "Speciality");
            updateCommand.Parameters.Add("@OldNo", SqlDbType.Char, 10, "No");                               //若学号发生更改,则还需提供旧学号,以便查询要更改的行;
            updateCommand.Parameters["@OldNo"].SourceVersion = DataRowVersion.Original;                     //旧学号的来源版本,为数据行版本中的原始值;
            SqlCommand deleteCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于删除;
            deleteCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;
            deleteCommand.CommandText =                                                                     //指定SQL命令的命令文本;
                "DELETE tb_Student"
                + " WHERE [email protected];";
            deleteCommand.Parameters.Add("@No", SqlDbType.Char, 10, "No");
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.InsertCommand = insertCommand;                                                   //将SQL数据适配器的属性InsertCommand指向用于插入记录的SQL命令;
            sqlDataAdapter.UpdateCommand = updateCommand;                                                   //将SQL数据适配器的属性UpdateCommand指向用于更新记录的SQL命令;
            sqlDataAdapter.DeleteCommand = deleteCommand;                                                   //将SQL数据适配器的属性DeleteCommand指向用于删除记录的SQL命令;
            DataTable studentTable1 = (DataTable)this.dgv_Score.DataSource;                                 //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;
            sqlConnection.Open();                                                                           //打开SQL连接;
            int rowAffected = sqlDataAdapter.Update(studentTable1);                                         //SQL数据适配器根据学生数据表提交所有更新,并返回受影响行数;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            MessageBox.Show("更新" + rowAffected.ToString() + "行。");                                      //在消息框显示受影响行数;

  

原文地址:https://www.cnblogs.com/nicestlala/p/9829511.html

时间: 2024-10-07 18:37:15

前端界面操作数据表(知识点描述,思维导图,示例代码,效果截图)的相关文章

在前端界面操作数据表

本周学习了在前端界面操作数据表. 一.思维导图 二.知识点描述 前端和后端之所以需要对接,是因为前端页面只负责提供视图没有内容,而后端只提供内容,两者所谓的对接,就是把后端的内容放在前端页面预留出来的位置上. 都是使用DataGridView控件 调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数: 捕捉SQL异常:若SQL异常编号为2627,则违反主键/唯一约束,即插入重复值: 存储过程调用SQL连接的方法CreateCommand来创建SQL命令

学习心得之如何在前端界面操作数据表

如何在前端界面操作数据表 CurrentCell 属性: 取得或者修改当前单元格的内容 Console.WriteLine(DataGridView1.CurrentCell.Value);// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);// 取得当前单元格的列 Index Console.WriteLine(DataGridView1.CurrentCell.RowIndex);// 取得当前单元格的行

数学知识点总结思维导图模板分享及绘制方法

主要讲述的是怎样对数学知识点进行总结归纳的方法,按照原定的数学知识对其整体进行总结绘制为如下思维导图,下面讲述怎样快速利用思维导图绘制数学知识点总结思维导图.将知识点进行总结归纳的作用在于对知识点进行更深层次的掌握,能在学习中更加轻松的利用.1.该思维导图模板有六个分支,新建中心主题之后围绕中心主题所搭建的节点,首先填充的是函数知识中的一般形式,将会出现的情况罗列出来.2.双击节点对内容进行填充,第二个节点中讲述的内容是围绕函数的走向以及所在的象限进行总结,可以加深记忆.3.第三个节点是围绕函数

【前端GUI】——网站设计的重要知识点总结&思维导图(一)

前言:网页美术设计具有四大特点,分别为交互性.整合性.多维性以及动态性.完整的网页设计既需要试听元素,也需要版式设计,以求有效的传达信息.在设计的时候,设计者要学会利用框架,也要学会打破框架. 一.优秀网页设计的特征   1.主题信息传达明确       单纯.简练.清晰和精确 符合视觉习惯和逻辑规律.文本条理化.样式化处理 形式美法则,图片色彩版式条理化(空间层次,主从关系,视觉秩序) 整齐排列 切割 整体性和多边性 2.网站内容与视觉形式统一 内容:功能主题文本.图片.视频 形式:版式风格.

数据结构与算法知识点梳理—思维导图

数据结构与算法是学习编程者的必修课,下面是我学习完之后的知识点梳理与总结.本来用xmind做的时候把重要知识点都附了博客链接,但是xmind导出来后打不开了.不用担心我把相关内容放在了数据结构专栏里.#专栏地址:http://blog.csdn.net/column/details/20027.html#如果喜欢该知识点的总结,图片下载链接:https://download.csdn.net/download/qq_38646470/10296136 原文地址:http://blog.51cto

陈为著《数据可视化》书评及思维导图

在确定数据可视化为自己研究主题之初,我经常上网搜寻相关资料.但是初期的收集经常是杂乱无章,缺乏系统规划的.以至于我产生了三个困扰我的问题,分别是: 1. 信息可视化与数据可视化,到底有什么区别?或者说infographics 与visualization之间有何区别? 2.data visualization就是数据挖掘之后的用于显示结果的统计图吗? 3.曾经在知乎上看见某资深程序员直言,数据可视化在国内除了折腾一下社交网络外,没什么好做的,是这样吗? 今年4月以来,我终于有时间仔细研究相关问题

ADO.Net中DataTable的应用(知识点描述、思维导图、示例代码、效果截图)

在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 DataTable 中.下面是 Ado.Net 关系:Connection_____Command____DataAdapter____Dataset  _____Datareader ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源. 一.思维导图: 二.知识点描述: Data Table的构造函数:

思维导图分析http之前端组成

思维导图分析http前端组成 全文总览 本文分为三个部分:前端组成,http协议,http服务器应用程序.http的应用按照我自己的理解分为前端应用以及后端应用,所以我分别写了前端组成以及http服务器应用程序两章,中间穿插了一章http协议,主要介绍了http协议. 2.前端组成 这里的前端主要指web前端,即网页前端.前端部分分为三个部分:html,css,js.html负责网页页面的结构布局以及静态内容的排版:css称为层级样式表,主要有页面布局,添加样式,美化页面的功能:js是脚本编程语

【JAVAWEB学习笔记】09_MySQL多表&JDBC(包含MySQL数据库思维导图)

今天晨读单词: order:订单constraint:(强制)约束foreign key:外键references:指向orderitem:订单项join:加入resourceBundle:资源捆绑classLoader:类加载器properties:属性inputstream:输入流 今日学习目标: 1.能够描述表与表的关系 2.能独立编写一对多的表关系SQL语句 3.能独立编写多对多的表关系SQL语句 4.能使用SQL进行多表查询 5.能使用JDBC完成单表增删改查操作 通过MySQL思维导