zoukankan      html  css  js  c++  java
  • 如何在各类空间中输入输出数据(读书笔记2)

    一.思维导图

     

    二.常用知识点描述

    1.DataAdapter对象

    充当DataSet和数据源之间用于检索和保存数据的桥梁。DataAdapter类代表用于填充DataSet以及更新数据源的一组数据库命令和一个数据库连接

    1.1属性和方法

    属性:

    SelectCommand引用从数据源中检索行的Command对象。

    InsertCommand引用将插入的行从DataSet写入数据源的Command对象。

    UpdateCommand引用将修改的行从DataSet写入数据源的Command对象。

    DeleteCommand引用从数据源中删除行的Command对象。

    方法:

    Fill。使用SqlDataAdapter的这个方法,从数据源增加或刷新行,并将这些行放到DataSet表中。Fill方法调用SelectCommand属性所指定的SELECT语句。

    Update。使用DataAdapter对象的这个方法,将DataSet表的更改传送到相应的数据源中。该方法为DataSet的DataTable中每一指定的行调用相应的INSERT、UPDATE或DELETE命令。

    2.DataTable对象

    一个临时保存数据的网格虚拟表(表示内存中数据的一个表)

    2.1属性和方法

     属性

    Columns:返回属于这个表的列的集合
    DataSet:获得包含这个表的DataSet
    DefaultView:获得表的自定义视图,它可能包含已过滤的视图或游标位置
    MinimumCapacity:获得或设置表中行的初始数目(默认为25)
    Rows:返回属于这个表的行集合
    TableName:获得或设置表的名称。这个属性还可以被指定为构造函数的参数

    方法

    AcceptChanges:提交对该表的所有修改

    NewRow:添加一个新的DataRow

    3.ComboBox控件

    3.1属性和方法

    属性

    DataSource :获取或设置此 ComboBox 的数据源。

    DisplayMember :获取或设置要为此 ListControl 显示的属性。

    SelectedText :获取或设置 ComboBox 的可编辑部分中选定的文本。

    ValueMember :获取或设置一个属性,该属性将用作 ListControl 中的项的实际值。

    SelectedValue:获取或设置由 ValueMember 属性指定的成员属性的值。

    注:

     DisplayMember 与ValueMember 属性的区别: DisplayMember绑定的是需显示的字段,ValueMember绑定的是对应的值 。

     方法

    Focus为控件设置输入焦点。

    三.实例演示

    1.关于TextBox和ComboBox的输入输出。

    1.1输入

    (1)连接数据库。这里使用到了configurationManager类(配置管理器),要引用using System.Configuration这个包。(并且需要在解决方案资源管理器里找到类文件选择“引用”,添加上去才能使用)。配置管理器的路径放在了App.config文件(配置文件)里。

    <?xml version="1.0" encoding="utf-8" ?>    //App.config文件代码
    <configuration>
        <connectionStrings>
            <add name="Sql"
                 connectionString="Server=(local);Database=MyHospital;Integrated Security=false;User id=SqlLogin1;Password=$q17o9!n1;FailOver Partner=local"
                 providerName="System.Data.SqlClient"/>
            <add name="Sql2"
                 connectionString="Server=(local);Database=MyHospital;Integrated Security=sspi"
                 providerName="System.Data.SqlClient"/>
        </connectionStrings>
    </configuration>

    (2)连接好数据库后就可以开始输入数据。代码如下。

     1 SqlConnection sqlConnection = new SqlConnection();                                             
     2             sqlConnection.ConnectionString =
     3             ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;                             
     4             SqlCommand sqlCommand = new SqlCommand();                                                      
     5             sqlCommand.Connection = sqlConnection;
     6             sqlCommand.CommandText =
     7                 "INSERT orders (SupplyID,OrderKinds,OrderDate,GetDate,ProducePla) VALUES(@SupplyID,@OrderKinds,@OrderDate,@GetDate,@ProducePla);";                 /
     8             sqlCommand.Parameters.AddWithValue("@SupplyID",comb_Supplyname.SelectedValue);
     9             sqlCommand.Parameters.AddWithValue("@OrderKinds", this.Order.Text.Trim());
    10             sqlCommand.Parameters.AddWithValue("@OrderDate", this.dateTimePicker1.Value);
    11             sqlCommand.Parameters.AddWithValue("@GetDate", this.dateTimePicker2.Value);
    12             sqlCommand.Parameters.AddWithValue("@ProducePla", this.Address.Text.Trim());
    13             sqlConnection.Open();                                                                      
    14             int rowAffected = sqlCommand.ExecuteNonQuery();                                           
    15             sqlConnection.Close();                                                                      
    16             if (rowAffected == 1)                                                                     
    17             {
    18                 MessageBox.Show("添加成功。");
    19                 ordersHelper.order = Order.Text.Trim();
    20                 if (dateTimePicker2.Value == DateTime.Now)
    21                 {
    22                     ordersHelper.state = "入库";
    23                 }
    24                 else {
    25                     ordersHelper.state = "未入库";
    26                 }
    27             }
    28             else                                                                                        
    29             {
    30                 MessageBox.Show("添加失败!");                                                          
    31             }

    1.2输出

    (1)连接数据库后,SQL数据适配器sqlDataAdapter读取数据,并填充数据表。将下拉框的成员变量设置为数据表的名称列,将下拉框的值变量设置为数据表的编号列。

     1 SqlConnection sqlConnection = new SqlConnection();                                             
     2             sqlConnection.ConnectionString =
     3             ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;                             
     4             SqlCommand sqlCommand = new SqlCommand();                                                       
     5             sqlCommand.Connection = sqlConnection;                                                         
     6             sqlCommand.CommandText = "SELECT * FROM supplyer;";                                            
     7             SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           
     8             sqlDataAdapter.SelectCommand = sqlCommand;                                                     
     9             DataTable supplyer = new DataTable();                                                        
    10             sqlConnection.Open();                                                                          
    11             sqlDataAdapter.Fill(supplyer);                                                               
    12             this.comb_Supplyname.DataSource = supplyer;                                                       
    13             this.comb_Supplyname.DisplayMember = "Supplyname";                                                        
    14             this.comb_Supplyname.ValueMember = "SupplyID";                                                             
    15             SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
    16             if (sqlDataReader.Read())                                                                       
    17             {
    18 
    19                 this.comb_Supplyname.SelectedValue = (int)sqlDataReader["SupplyID"];
    20 
    21             }
    22             sqlDataReader.Close();    

    2.关于DataGridView的输入输出

    2.1输出

     1 SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
     2             sqlConnection.ConnectionString =
     3                 "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
     4             SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
     5             sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
     6             sqlCommand.CommandText = "SELECT * FROM tb_Student;";                                           //指定SQL命令的命令文本;该命令查询所有学生;
     7             SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
     8             sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
     9             DataTable studentTable = new DataTable();                                                       //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;
    10             sqlConnection.Open();                                                                           //打开SQL连接;
    11             sqlDataAdapter.Fill(studentTable);                                                              //SQL数据适配器读取数据,并填充学生数据表;
    12             sqlConnection.Close();                                                                          //关闭SQL连接;
    13             this.dgv_Score.DataSource = studentTable;       

     2.2输出(更新)

    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 No=@NewNo,Name=@Name,Gender=@Gender,BirthDate=@BirthDate,Class=@Class,Speciality=@Speciality"
                    + " WHERE No=@OldNo;";
                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 No=@No;";
                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() + "行。");       

     三.关于PitureBox的输入与输出

    3.1输出

     1 SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
     2             sqlConnection.ConnectionString =
     3                 "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
     4             SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
     5             SqlCommand sqlCommand2 = new SqlCommand();                                                      //声明并实例化SQL命令;
     6             sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
     7             sqlCommand2.Connection = sqlConnection;                                                         //将SQL命令的连接属性指向SQL连接;
     8             sqlCommand.CommandText = "SELECT * FROM tb_Class;";                                             //指定SQL命令的命令文本;该命令查询所有班级,以用作下拉框数据源;
     9             sqlCommand2.CommandText = "SELECT * FROM tb_Student WHERE No=@No;";                             //指定SQL命令的命令文本;该命令查询指定学生;
    10             sqlCommand2.Parameters.AddWithValue("@No", "3120707001");                                       //向SQL命令的参数集合添加参数的名称、值;
    11             SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令;
    12             sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
    13             DataTable classTable = new DataTable();                                                         //声明并实例化数据表,用于保存所有班级,以用作下拉框数据源;
    14             sqlConnection.Open();                                                                           //打开SQL连接;
    15             sqlDataAdapter.Fill(classTable);                                                                //SQL数据适配器读取数据,并填充班级数据表;
    16             this.cmb_Class.DataSource = classTable;                                                         //将班级下拉框的数据源设为班级数据表;
    17             this.cmb_Class.DisplayMember = "Name";                                                          //将班级下拉框的显示成员设为班级数据表的名称列;
    18             this.cmb_Class.ValueMember = "No";                                                              //将班级下拉框的值成员设为班级数据表的编号列;
    19             SqlDataReader sqlDataReader = sqlCommand2.ExecuteReader();                                      //调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;
    20             byte[] photoBytes = null;                                                                       //声明字节数组,用于保存照片数据;但先赋予空值;
    21             if (sqlDataReader.Read())                                                                       //若数据阅读器成功读取到下一条记录(首次查询则表示第一条记录);
    22             {
    23                
    24                 photoBytes =
    25                     (sqlDataReader["Photo"] == DBNull.Value ? null : (byte[])sqlDataReader["Photo"]);       //根据照片是否为数据库空值,分别将空值、转为字节数组的照片数据赋予事先声明的字节数组;
    26             }
    27             sqlDataReader.Close();                                                                          //关闭数据阅读器(同时关闭连接);
    28             if (photoBytes != null)                                                                         //若学生的照片非空;
    29             {
    30                 MemoryStream memoryStream = new MemoryStream(photoBytes);                                   //声明并实例化内存流,用于读取照片的字节数据;
    31                 this.ptb_Photo.Image = Image.FromStream(memoryStream);                                      //调用图像的静态方法FromStream从内存流中读取图像,并赋予图像框;
    32             }

    3.2输入

     1 MemoryStream memoryStream = new MemoryStream();                                                 //声明并实例化内存流,用于读取照片的字节数据;
     2             this.ptb_Photo.Image.Save(memoryStream, ImageFormat.Bmp);                                       //调用图像框的图像的静态方法Save,将图像保存至内存流;
     3             byte[] photoBytes = new byte[memoryStream.Length];                                              //声明并实例化字节数组,用于保存照片数据;数组长度对应内存流长度;
     4             memoryStream.Seek(0, SeekOrigin.Begin);                                                         //保存后的内存流的偏移位置在末尾,需通过查找来将偏移位置设为起始;
     5             memoryStream.Read(photoBytes, 0, photoBytes.Length);                                            //将内存流读入字节数组;
     6             SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
     7             sqlConnection.ConnectionString =
     8                 "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
     9             SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
    10             sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
    11             sqlCommand.CommandText =                                                                        //指定SQL命令的命令文本;
    12                 "UPDATE tb_Student"
    13                 + " SET Name=@Name,Gender=@Gender,BirthDate=@BirthDate,ClassNo=@ClassNo,Speciality=@Speciality,Photo=@Photo"
    14                 + " WHERE No=@No;";
    15             sqlCommand.Parameters.AddWithValue("@Name", this.txb_Name.Text.Trim());                         //向SQL命令的参数集合添加参数的名称、值;
    16             sqlCommand.Parameters.AddWithValue("@Gender", this.rdb_Male.Checked);
    17             sqlCommand.Parameters.AddWithValue("@BirthDate", this.dtp_BirthDate.Value);
    18             sqlCommand.Parameters.AddWithValue("@ClassNo", (int)this.cmb_Class.SelectedValue);
    19             sqlCommand.Parameters.AddWithValue("@Speciality", this.txb_Speciality.Text.Trim());
    20             sqlCommand.Parameters.AddWithValue("@Photo", photoBytes);
    21             sqlCommand.Parameters.AddWithValue("@No", "3120707001");
    22             sqlConnection.Open();                                                                           //打开SQL连接;
    23             int rowAffected = sqlCommand.ExecuteNonQuery();                                                 //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
    24             sqlConnection.Close();                                                                          //关闭SQL连接;
    25             MessageBox.Show("更新" + rowAffected.ToString() + "行。");     
  • 相关阅读:
    NUnit
    Fxcop
    msdeploy命令实现远程部署时保留指定文件
    virtualBox 创建新虚拟机
    sharepoint项目部署
    执行批处理文件
    NCover
    配置Web DashBoard
    ccnet+ncover+fxcop+web deploy+mstest
    命令行部署Reporting Services项目
  • 原文地址:https://www.cnblogs.com/lidie-/p/9783773.html
Copyright © 2011-2022 走看看