本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63
using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True")) { 程序语句块; }
或者:
SqlConnection cnn = new SqlConnection();//创建SqlConnection对象的一个实例 cnn.ConnectionString = "Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True"; cnn.Open();
cmd.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)"; cmd.Parameters.Add(new SqlParameter("Name", Name.Text)); cmd.Parameters.Add(new SqlParameter("Company", Company.Text)); cmd.Parameters.Add(new SqlParameter("Position", Position.Text)); cmd.Parameters.Add(new SqlParameter("Datetime", DateTime.Parse(Datetime.Text))); cmd.ExecuteNonQuery();
using(SqlCommand cmd = con.CreateComand()) { cmd.CommandText = “INSERT INTO b1(name, company, position) VALUES(“whh”, “UVGE”, “coder”)”; cmm.ExecuteNonQuery(); }
或者:
using(SqlCommand cmd = con.CreateComand()) { //设置SQL语句 cmm.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)"; //创建参数,并定义其数据类型,要和数据库中对应的字段保持相同 cmm.Parameters.Add("@Name", SqlDbType.NVarChar); cmm.Parameters.Add("@Company", SqlDbType.NVarChar); cmm.Parameters.Add("@Position", SqlDbType.NVarChar); cmm.Parameters.Add("@Datetime", SqlDbType.DateTime); //设置参数的值,这些值来自前段的输入信息 cmm.Parameters["@Name"].Value = Name.Text; cmm.Parameters["@Company"].Value = Company.Text; cmm.Parameters["@Position"].Value = Position.Text; cmm.Parameters["@Datetime"].Value = Datetime.Text; //执行SQL语句 cmm.ExecuteNonQuery(); }
using(SqlCommand cmd = con.CreateComand()) { Cmd.CommandText = “SELECT语句”; using(SqlDataReader reader = cmd.ExecuteReader()) { While(reader.Read()) { String name = reader.GetString(reader.GetOrdinal(“name”)); //数据处理语句块; } } }
或者:
using(SqlCommand cmd = con.CreateComand()) { using(SqlDataReader reader = cmd.ExecuteReader()) { While(reader.Read()) { String name = reader.[“name”].ToString(); //数据处理语句块; } } }
cmd.CommandText = “INSERT INTO T_Users(UserName,PassWord) OUTPUT inserted.Id Values(“admin”, “123456”)”; int id = Convert.ToInt32(cmd.ExecuteScalar());
SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1] WHERE shijian > ‘2010-01-21‘", con)
DataSet order_daset = new DataSet();//创建DataSet对象实例 sqldadp.Fill(order_daset);//填充DataSet对象
DataTable dt = new DataTable();//创建数据表对象 dt = order_daset.Tables[0];//填充数据表 Response.Write("<table border=‘1‘><tr><th>姓名</th><th>公司</th><th>职位</th><th>入职时间</th></tr>"); for (int i = 0; i < dt.Rows.Count; i++) { //按照字段,逐行取出数据表中的内容并显示在页面上 Response.Write("<tr>"); Response.Write("<td>"+dt.Rows[i]["name"].ToString()+"</td>"); Response.Write("<td>"+dt.Rows[i]["company"].ToString()+"</td>"); Response.Write("<td>"+dt.Rows[i]["position"].ToString()+"</td>"); Response.Write("<td>"+DateTime.Parse(dt.Rows[i]["shijian"].ToString()).ToString("yyyy-MM-dd") + "</td>"); Response.Write("</tr>"); } Response.Write("</table>");
注:上面的代码主要是数据集的展示功能,需要注意的是填充数据表的语句,是由DataSet对象的Tables属性的下标为0的数据表填充的,这点是非常重要的。
下面来看看对数据集的修改并且提交数据库,对数据集的修改,可以通过DataRow以及SqlCommandBuilder对象的实例来实现,SqlCommandBuilder的作用是根据DataAdapter对象自动生成INSERT、UPDATE、DELETE语句,从而使DataAdapter对象更新数据库内容。具体代码如下:
//创建DataAdapter对象实例 SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1]", con); SqlCommandBuilder scb = new SqlCommandBuilder(sqldadp);//生成插入、删除、更新语句 DataSet ds = new DataSet();//创建DataSet对象 sqldadp.Fill(ds);//填充DataSet DataRow Myrow = ds.Tables[0].NewRow();//在数据表中创建新的空白记录对象 //从前台页面接受要插入的数据 Myrow["name"] = Name.Text; Myrow["company"] = Company.Text; Myrow["position"] = Position.Text; Myrow["shijian"] = Datetime.Text; //将接收到的数据添加到DataTable中 ds.Tables[0].Rows.Add(Myrow); //更新数据库中的内容 sqldadp.Update(ds); Response.Write("添加成功!<br>");
注:上面的代码中最关键的一个方法是SqlDataAdapter对象的Update()方法,这个方法的作用是将对数据集所作的改变提交给数据库,这部分代码与上面的展示代码所不同的是DataRow对象的实例所接收的是DataTable中的一行,而不是整个DataTable,其代码为:DataRow Myrow =ds.Tables[0].NewRow(),这句话就是说在原有的DataTable的基础上创建一个新的空行,而下面的代码则是为这个空行赋值并提交更新,同样的,如果是更新数据的话,也是获得DataTable的某一行后,然后对其中的数据进行赋值修改,然后提交,如果是删除操作,则是通过DataTable获取某行后,用DataRow接受,然后再调用DataTable的Rows属性的Remove方法删除,具体如下代码:
DataTable dt = ds.Tables[0]; dt.Rows.Remove(Myrow);
using (SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = UserDate; Integrated Security = True")) { SqlTransaction transql = null;//申明SqlTransaction对象的实例 SqlCommand cmd = new SqlCommand(); try { con.Open();//创建数据库链接 transql = con.BeginTransaction();//开始事务处理 cmd.Connection = con;//设置Command对象的链接 cmd.Transaction = transql;//设置Command对象的事务 //设置带参数的SQL语句 cmd.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)"; //为参数赋值(注意参数在数据库中的数据类型) cmd.Parameters.Add(new SqlParameter("Name", Name.Text)); cmd.Parameters.Add(new SqlParameter("Company", Company.Text)); cmd.Parameters.Add(new SqlParameter("Position", Position.Text)); cmd.Parameters.Add(new SqlParameter("Datetime", DateTime.Parse(Datetime.Text)));//注意数据类型转换 //执行SQL语句 cmd.ExecuteNonQuery(); //提交事务 transql.Commit(); Response.Write("添加成功!<br>"); } catch { //如果程序抛出异常则做事务回滚 transql.Rollback(); } }
注:在上面的代码中,特别要注意SqlTransaction的实例接收的是SqlConnection实例的BeginTransaction()的返回值,SqlCommand的实例的Transaction属性接收的是SqlTransaction的实例,即SqlConnection实例的BeginTransaction()的返回值,而整个事务的过程是由SqlCommand实例来书写的,也就是说,在SqlCommand实例里面的代码相对应的事务都由SqlTransaction的实例自动生成,前提是必须要有transql = con.BeginTransaction();cmd.Transaction= transql;这两句代码,最后用SqlTransaction的Commit()方法或者Rollback()对事务进行提交或者回滚