当前位置:Gxlcms > 数据库问题 > SqlCommandBuilder类是如何构建T-Sql语句

SqlCommandBuilder类是如何构建T-Sql语句

时间:2021-07-01 10:21:17 帮助过:15人阅读

建库建表 create database student; use student; create table student( sname varchar(10) not null, sno int not null, sage int not null, ssex varchar(2) not null ); alter table student add constraint PK_sno primary key (sno), constraint CK_ssex check(ssex = or ssex = ), constraint CK_sage check(sage > 8 and sage < 40) insert into student values(张三, 103, 23, ); insert into student values(李四, 104, 24, ); insert into student values(王五, 105, 25, ); insert into student values(赵六, 106, 26, ); insert into student values(朱七, 107, 27, ); select * from student; delete student;

技术分享

C#代码:

public static void AdapterAndSqlCommand()
        {
            //第一步:获取数据库配置信息
            String connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString();
            //第二步:构建SqlCommand查询语句
            SqlCommand command = new SqlCommand("select * from student;");
            command.Connection = new SqlConnection(connStr);
            //第三步:创建SqlDataAdapter
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            //第四步:创建DataSet和DataTable
            DataSet dataSet = new DataSet();
            DataTable dataTable = new DataTable();
            //第五步:填充数据
            adapter.Fill(dataTable);
            dataSet.Tables.Add(dataTable);
            //修改第一行数据中的姓名为小红,并将其性别改为女
            dataTable.Rows[0]["sname"] = "小红";
            dataTable.Rows[0]["ssex"] = "";
            //删除第二行数据
            dataTable.Rows[1].Delete();
            //构建一个新的行,并添加到表中去
            dataTable.Rows.Add(new object[] {"小明", 108, 18, "" });
            //创建SqlCommandBuilder对象,并绑定一个SqlDataAdapter对象
            SqlCommandBuilder scb = new SqlCommandBuilder(adapter);
            //打印输出SqlCommandBuilder对象的增删改sql命令语句
            Console.WriteLine("SqlCommandBuilder实例的Insert命令: " + scb.GetInsertCommand().CommandText);
            Console.WriteLine("SqlCommandBuilder实例的Delete命令: " + scb.GetDeleteCommand().CommandText);
            Console.WriteLine("SqlCommandBuilder实例的Update命令: " + scb.GetUpdateCommand().CommandText);
            //将有变动的行同步到数据库中
            adapter.Update(dataTable.GetChanges());
            //保存修改
            dataTable.AcceptChanges();
            //下面是一个遍历输出datatable中的数据
            foreach (DataTable table in dataSet.Tables)
            {
                foreach(DataRow row in table.Rows)
                {
                    Console.WriteLine(row[0] + ", " + row[1] + ", " + row[2] + ", " + row[3]);
                }
            }
        }

运行打印输出的结果如下:内存中数据变化符合预期

技术分享

数据库中呢?

技术分享

也是正常的,已经同步到了数据库中。修改了一个,删除了一个,新增了一个。

但是我们看那个控制台打印的sql命令,命令是对着的,但怎么还有局部变量,这些局部变量又是什么时候替换的呢?

SqlCommandBuilder类是如何构建T-Sql语句

标签:char   manage   key   foreach   targe   color   primary   sql语句   const   

人气教程排行