数据表合并2

时间:2021-06-06 12:17:12
  
 
 
private void button1_Click( object sender, EventArgs e)
        { //避免增加除主键外的相同记录
           string MyCompanyName= "深圳唯佳物流公司" ;
           string MyPhone= "0589-86523158" ;
           string MySQL= "SELECT * FROM Shippers" ;
           string MyConnectionString= "Data Source = .;Database =    Northwind;uid=sa;pwd=top-each123;Integrated Security=SSPI" ;           
           SqlDataAdapter  MyAdapter= new SqlDataAdapter(MySQL,MyConnectionString);
           SqlCommandBuilder MyBuilder= new SqlCommandBuilder(MyAdapter);
           DataSet MySet= new DataSet();
           MyAdapter.Fill(MySet, "Shippers" );
           DataColumn []MyKeys= new DataColumn[2];
           MyKeys[0] = MySet.Tables[ "Shippers" ].Columns[ "CompanyName" ];
           MyKeys[1] = MySet.Tables[ "Shippers" ].Columns[ "Phone" ];
           MySet.Tables[ "Shippers" ].PrimaryKey = MyKeys;
           string [] MySupplier = {MyCompanyName ,MyPhone};
           DataRow MyFindRow = MySet.Tables[ "Shippers" ].Rows.Find(MySupplier);
           if (MyFindRow == null )
           {
               DataRow MyNewRow =MySet.Tables[ "Shippers" ].NewRow();
               MyNewRow[ "CompanyName" ] = MySupplier[0];
               MyNewRow[ "Phone" ] = MySupplier[1];
               MySet.Tables[ "Shippers" ].Rows.Add(MyNewRow);
               MyAdapter.Update(MySet, "Shippers" );
               MessageBox.Show( "增加记录操作成功!" , "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
           }
           else
               MessageBox.Show( "该记录已经存在!" , "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);                   
        }
 
        private void button2_Click( object sender, EventArgs e)
        { //以参数化方式增加数据库记录
           string MyCompanyName= "深圳唯佳物流公司" ;
           string MyPhone= "0589-86523158" ;
           string MyConnectionString = "Data Source = .;Database =  Northwind;uid=sa;pwd=top-each123;Integrated Security=SSPI" ;           
           SqlConnection MyConnection= null ;
           try
           {
             MyConnection= new SqlConnection(MyConnectionString);
             MyConnection.Open();
             SqlCommand MyCommand=MyConnection.CreateCommand();
             MyCommand.CommandText = "INSERT INTO Shippers VALUES(@CompanyName, @Phone)" ;
             MyCommand.Parameters.Add( new SqlParameter( "@CompanyName" , SqlDbType.VarChar,30));
             MyCommand.Parameters.Add( new SqlParameter( "@Phone" , SqlDbType.VarChar, 30));
             MyCommand.Prepare();
             MyCommand.Parameters[ "@CompanyName" ].Value =MyCompanyName;
             MyCommand.Parameters[ "@Phone" ].Value =MyPhone;
             MyCommand.ExecuteNonQuery();
             MessageBox.Show( "增加记录操作成功!" , "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
           }
           catch (Exception ex)
           {
             MessageBox.Show( "增加记录出现错误:" + ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
           }
           finally
           {
               MyConnection.Close();
           }
        }
 
        private void button3_Click( object sender, EventArgs e)
        { //使用事务实现更新多个数据表
            try
            {
                string MyConnectionString = "Data Source=.;Initial Catalog=Northwind;uid=sa;pwd=top-each123;Integrated Security=True" ;
                string MySQL1 = "INSERT Customers (CustomerID, CompanyName) VALUES ('BOGUS','Bogus Company')" ;
                string MySQL2 = "INSERT Orders (CustomerID, EmployeeID,  ShipVia) VALUES ('BOGUS', 1, 1)" ;
                string MySQL3 = "DELETE FROM Orders WHERE CustomerID = 'BOGUS'" ;
                string MySQL4 = "DELETE FROM Customers WHERE CustomerID = 'BOGUS'" ;
                SqlConnection MyConnection = new SqlConnection(MyConnectionString);
                SqlTransaction MyTransaction = null ;
                int MyAffectedCount = 0;
                string MyTitle = "" ;
                MyConnection.Open();
                try
                {                  
                    MyTransaction = MyConnection.BeginTransaction(System.Data.IsolationLevel.RepeatableRead);
                    MyTitle = "插入操作提示" ;
                    SqlCommand MyCommand = new SqlCommand(MySQL1, MyConnection);
                    MyCommand.CommandType = CommandType.Text;
                    MyCommand.Transaction = MyTransaction;
                    MyAffectedCount = MyCommand.ExecuteNonQuery();
                    MyCommand.CommandText = MySQL2;
                    MyAffectedCount += MyCommand.ExecuteNonQuery();
                    MyTransaction.Commit();
                    MyTitle = "删除操作提示" ;
                    MyTransaction = MyConnection.BeginTransaction(System.Data.IsolationLevel.RepeatableRead);
                    MyCommand.CommandText = MySQL3;
                    MyCommand.Transaction = MyTransaction;
                    MyAffectedCount += MyCommand.ExecuteNonQuery();
                    MyCommand.CommandText = MySQL4;
                    MyAffectedCount += MyCommand.ExecuteNonQuery();
                    MyTransaction.Commit();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, MyTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    try
                    {
                        MyTransaction.Rollback();
                    }
                    catch (SqlException MyEx)
                    {
                        MessageBox.Show(MyEx.Message, MyTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }              
                finally
                {
                    MyConnection.Close();
                    string MyInfo;
                    if (MyAffectedCount == 4)
                        MyInfo = "成功实现插入和删除事务操作" ;
                    else
                        MyInfo = "实现插入和删除事务操作失败,请检查Customers和Orders数据表" ;
                    MessageBox.Show(MyInfo, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);             
            }
        }
 
        private void button4_Click( object sender, EventArgs e)
        { //创建隐式事务管理数据库更新
            //在【添加引用】对话框的【.NET】标签页列表视图中选择“System.Transactions”选项
            using (TransactionScope MyScope = new TransactionScope())
            {
                string MyConnectionString = "Data Source=.;Initial Catalog=Northwind;uid=sa;pwd=top-each123;Integrated Security=True" ;
                string MySQL1 = "INSERT Customers (CustomerID, CompanyName) VALUES ('BOGUS','Bogus Company')" ;
                string MySQL2 = "INSERT Orders (CustomerID, EmployeeID,  ShipVia) VALUES ('BOGUS', 1, 1)" ;
                string MySQL3 = "DELETE FROM Orders WHERE CustomerID = 'BOGUS'" ;
                string MySQL4 = "DELETE FROM Customers WHERE CustomerID = 'BOGUS'" ;
                SqlConnection MyConnection = new SqlConnection(MyConnectionString);
                int MyAffectedCount = 0;
                string MyTitle = "" ;                
                try
                {
                    MyConnection.Open(); 
                    MyTitle = "插入操作提示" ;           
                    SqlCommand MyCommand= new SqlCommand(MySQL1, MyConnection);
                    MyCommand.CommandType = CommandType.Text;
                    MyAffectedCount = MyCommand.ExecuteNonQuery();
                    MyCommand.CommandText = MySQL2;
                    MyAffectedCount += MyCommand.ExecuteNonQuery();
                    MyTitle = "删除操作提示" ;
                    MyCommand.CommandText = MySQL3;
                    MyAffectedCount += MyCommand.ExecuteNonQuery();
                    MyCommand.CommandText = MySQL4;
                    MyAffectedCount += MyCommand.ExecuteNonQuery();
                    MyScope.Complete();
                 }
                 catch (SqlException ex)
                 {
                    MessageBox.Show(ex.Message, MyTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 finally
                 {
                    MyConnection.Close();
                    string  MyInfo ;
                    if (MyAffectedCount == 4)
                        MyInfo = "成功实现插入和删除事务操作" ;
                    else
                        MyInfo = "实现插入和删除事务操作失败,请检查Customers和Orders数据表" ;
                    MessageBox.Show(MyInfo, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
            }
        }
 
        private void button5_Click( object sender, EventArgs e)
        { //以批量方式导入导出数据库记录
            string MyConnectionString = "Data Source=.;Initial Catalog=shop;uid=sa;pwd=top-each123;Integrated Security=True" ;
            string MySQL = "SELECT * into 新客户表 From tbl_order Where 1<>1" ;
            SqlConnection MyConnection = null ;
            try
            {
                //新建一个数据表“新客户表”
                MyConnection = new SqlConnection(MyConnectionString);
                SqlCommand MyCommand = new SqlCommand(MySQL, MyConnection);
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                //从“Customers”数据表批量导入数据库记录到“新客户表”
                DataSet MySet= new DataSet();
                SqlDataAdapter MyAdapter= new SqlDataAdapter( "Select top 1000 * From tbl_order" ,MyConnection);
                MyAdapter.Fill(MySet);
                SqlBulkCopy MyBulkCopy= new SqlBulkCopy(MyConnection);
                MyBulkCopy.DestinationTableName = "新客户表" ;
                MyBulkCopy.WriteToServer(MySet.Tables[0]);
                MessageBox.Show( "从“Customers”数据表批量导入数据库记录到“新客户表”操作成功!" , "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                MyConnection.Close();
            }
        }
 
        private void button6_Click( object sender, EventArgs e)
        { //合并两个数据表的数据库记录
            string MyConnectionString = "Data Source=.;Initial Catalog=Northwind;uid=sa;pwd=top-each123;Integrated Security=True" ;
            SqlConnection MyConnection = null ;
            try
            {
                //创建“Germany”数据表
                DataTable MyGermanyTable = new DataTable( "Germany" );
                MyConnection = new SqlConnection(MyConnectionString);
                SqlDataAdapter MyAdapter = new SqlDataAdapter( "Select * From Customers Where Country='Germany'" , MyConnection);
                MyAdapter.Fill(MyGermanyTable);
                //创建“Mexico”数据表
                DataTable MyMexicoTable = new DataTable( "Mexico" );
                MyConnection = new SqlConnection(MyConnectionString);
                MyAdapter = new SqlDataAdapter( "Select * From Customers Where Country='Mexico'" , MyConnection);
                MyAdapter.Fill(MyMexicoTable);
                //合并两个数据表
                MyMexicoTable.Merge(MyGermanyTable);
                this .dataGridView1.DataSource = MyMexicoTable;
                MessageBox.Show( "合并两个数据表操作成功!" , "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                MyConnection.Close();
            }
        }
 
        private void button7_Click( object sender, EventArgs e)
        { //使用数据表获取数据读取器内容
            string MyConnectionString = "Data Source=.;Initial Catalog=Northwind;uid=sa;pwd=top-each123;Integrated Security=True" ;
            SqlConnection MyConnection = null ;
            try
            {
                MyConnection = new SqlConnection(MyConnectionString);
                SqlCommand MyCommand = new SqlCommand( "Select * From Customers" , MyConnection);
                MyConnection.Open();
                SqlDataReader MyReader = MyCommand.ExecuteReader();
                DataTable MyTable = new DataTable();
                MyTable.Load(MyReader);
                this .dataGridView1.DataSource = MyTable;
                MessageBox.Show( "使用数据表获取数据读取器内容操作成功!" , "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                MyConnection.Close();
            }   
        }
 
        private void button8_Click( object sender, EventArgs e)
        { //使用数据读取器获取多个结果集
            string MyConnectionString = "Data Source=.;Initial Catalog=Northwind;uid=sa;pwd=top-each123;Integrated Security=True" ;
            SqlConnection MyConnection = null ;
            try
            {
               //定义并打开SqlConnection 对象
               MyConnection= new SqlConnection(MyConnectionString);
               MyConnection.Open();
               //定义SqlCommand 获取多结果集
               String MySQL = "Select top 4  CompanyName From Customers;Select top 5  City,Region From Employees;Select top 6 ProductName From Products" ;
               SqlCommand MyCommand = new SqlCommand(MySQL, MyConnection);
               MyCommand.CommandType = CommandType.Text;
               //定义并创建SqlDataReader
               //当关闭SqlDataReader时关闭数据连接
               string MyInfo= "" ;
               SqlDataReader MyReader= MyCommand.ExecuteReader(CommandBehavior. CloseConnection);
              if (MyReader.HasRows)
              {
                MyInfo+= "\n第1个结果集的第一个字段所有记录数据是:" ;
                while (MyReader.Read())
                {                
                  MyInfo+= "\n" +MyReader[0].ToString();
                }
                int MyCount= 1;              
                while (MyReader.NextResult())
                {
                  MyCount = MyCount + 1;
                  MyInfo+= "\n第" +MyCount+ "个结果集的第一个字段所有记录数据是:" ;
                  while (MyReader.Read())
                  {
                      MyInfo+= "\n" +MyReader[0].ToString();
                  }                  
                }
              }
              MyReader.Close();
              MessageBox.Show(MyInfo, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                if (MyConnection.State ==ConnectionState.Open)
                    MyConnection.Close();
            }   
        }
 
        private void button9_Click( object sender, EventArgs e)
        { //以参数化方式查询数据库记录   
            SqlConnection MyConnection = null ;
            try
            {
                string MySQL = "Select * From Customers Where Country=@MyCountry" ;
                string MyConnectionString = "Data Source = localhost;Database = Northwind;uid=sa;pwd=top-each123;Integrated Security=SSPI" ;
                SqlParameter MySqlParameter = new SqlParameter();
                MyConnection = new SqlConnection(MyConnectionString);
                MyConnection.Open();
                SqlCommand MyCommand = new SqlCommand(MySQL, MyConnection);
                MySqlParameter.ParameterName = "@MyCountry" ;
                MySqlParameter.Value = "Germany" ;
                MyCommand.Parameters.Clear();
                MyCommand.Parameters.Add(MySqlParameter);
                DataTable MyTable = new DataTable();
                SqlDataAdapter MyAdapter = new SqlDataAdapter(MyCommand);
                MyAdapter.Fill(MyTable);
                this .dataGridView1.DataSource = MyTable;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                if (MyConnection.State == ConnectionState.Open)
                    MyConnection.Close();
            }
        }
 
        private void button10_Click( object sender, EventArgs e)
        { //创建和使用无连接数据表
            try
            {
                //创建数据表
                DataColumn[] MyKey = new DataColumn[1];
                DataTable MyTable = new DataTable( "MyClassmate" );
                DataColumn MyColumn = new DataColumn();
                MyColumn.DataType = System.Type.GetType( "System.Int32" );
                MyColumn.ColumnName = "ID" ;
                MyTable.Columns.Add(MyColumn);
                MyKey[0] = MyColumn;
                MyTable.PrimaryKey = MyKey;
                MyTable.Columns.Add( "Name" , typeof (String));
                MyTable.Columns.Add( "Tel" , typeof (String));
                MyTable.Columns.Add( "MP" , typeof (String));
                MyTable.Columns.Add( "Company" , typeof (String));
                //在数据表中添加记录一
                DataRow MyRow = MyTable.NewRow();
                MyRow[ "ID" ] = 87121;
                MyRow[ "Name" ] = "罗斌" ;
                MyRow[ "Tel" ] = "023-40231026" ;
                MyRow[ "MP" ] = "13036371686" ;
                MyRow[ "Company" ] = "无锡宝特软件有限公司" ;
                MyTable.Rows.Add(MyRow);
                //在数据表中添加记录二
                MyRow = MyTable.NewRow();
                MyRow[ "ID" ] = "87123" ;
                MyRow[ "Name" ] = "蒋兰坤" ;
                MyRow[ "Tel" ] = "023-68015059" ;
                MyRow[ "MP" ] = "13062308583" ;
                MyRow[ "Company" ] = "重庆百货大楼股份有限公司" ;
                MyTable.Rows.Add(MyRow);
                //在数据表中添加记录三
                MyRow = MyTable.NewRow();
                MyRow[ "ID" ] = 87124;
                MyRow[ "Name" ] = "王彬" ;
                MyRow[ "Tel" ] = "023-40513307" ;
                MyRow[ "MP" ] = "13883070418" ;
                MyRow[ "Company" ] = "重庆日报印刷厂" ;
                MyTable.Rows.Add(MyRow);
                this .dataGridView1.DataSource = MyTable;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "信息提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }