标签:
本文转载自: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()对事务进行提交或者回滚
标签:
原文地址:http://www.cnblogs.com/shouce/p/5282009.html