zoukankan      html  css  js  c++  java
  • SqlCommandBuilder 为SqlDataAdapter 提供 update、insert、delete 命令(自己利用select命令自动从数据库元数据推断)

            //SqlCommandBuilder 为 SqlDataAdapter 提供 update、insert、delete 命令(自己利用select命令自动从数据库元数据推断)
            //select命令必须包含主键(SqlCommandBuilder 自己去推断其他的三个命令)
            //推断完成后,不需要对SqlDataAdapter的三个命令进行赋值(当然赋值也行,但是在赋值之前,显示空异常)
            private void button8_Click(object sender, EventArgs e)
            {
                SqlConnection sqlCon = new SqlConnection(connectionString_da2017);
                //SqlDataAdapter 自动建立数据库和DataSet的关系
                SqlDataAdapter sqlDa = new SqlDataAdapter("select * from test ", sqlCon);
                SqlCommandBuilder sqlcb = new SqlCommandBuilder(sqlDa);
                DataSet sqlds = new DataSet();
                sqlDa.Fill(sqlds);
    
                // 数据库数据
                DataTable databaseData = sqlds.Tables[0];
                DataRow dr =  databaseData.NewRow();
                dr[0] = "0"; //自增的id 此句话无效
                dr[1] = "1235";
                dr[2] = "ABCg";
                databaseData.Rows.Add(dr);
                //SqlCommandBuilder 为 SqlDataAdapter 提供 update、insert、delete 命令(自己利用select命令自动从数据库元数据推断)
                //select 命令必须包含键列信息
            
                //如果直接访问sqlDa.InsertCommand.CommandText 则显示空异常
                //MessageBox.Show(sqlDa.InsertCommand.CommandText);
    
                //但是如果 手动给他赋值,又多次一举(效果是相同的)
                //sqlDa.InsertCommand = sqlcb.GetInsertCommand();
                
                sqlDa.Update(databaseData);
               
                
                //MessageBox.Show(sqlcb.GetDeleteCommand().CommandText);
                //MessageBox.Show(sqlcb.GetInsertCommand().CommandText);
               // MessageBox.Show(sqlcb.GetUpdateCommand().CommandText);
                
                //DELETE FROM [test] WHERE (([id] = @p1) AND ((@p2 = 1 AND [val1] IS NULL) OR ([val1] = @p3)) AND ((@p4 = 1 AND [val2] IS NULL) OR ([val2] = @p5)))
                //INSERT INTO [test] ([val1], [val2]) VALUES (@p1, @p2)
                //UPDATE [test] SET [val1] = @p1, [val2] = @p2 WHERE (([id] = @p3) AND ((@p4 = 1 AND [val1] IS NULL) OR ([val1] = @p5)) AND ((@p6 = 1 AND [val2] IS NULL) OR ([val2] = @p7)))
    
            }
  • 相关阅读:
    在Netty使用中TLSv1.3
    基本路径测试
    测试准备
    skywalking源码中添加日志代码并打印
    Java应用启动集成skywalking
    Logback获取全局唯一标识 traceid记录到日志中
    通过示例展示Byte Buddy 如何增强 log() 方法
    SpringIOC
    Flask 信号机制
    Django 信号机制
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/14092299.html
Copyright © 2011-2022 走看看