ADO.NET 3.5 同SQL 2008的新的存储过程保存方式

1. 我们在SQL 2008当中新建一个测试用表。

create table employee (
id int,
name varchar(100)

)

2.创建一个类型。

 create type emplyeetable as Table
 (
 id int,name varchar(100)
 )

这个类型同表的结构是一样的。生成后在 [DB]->Programmability->Types->User-Defined Table Types节点下面就可见。

 

3.创建存储过程

create proc InsertEmployee(@em emplyeetable readonly)
 as
 begin
 insert into  employee
 select * from @em
 end

这里要注意了:readonly这个是必需的。emplyeetable 这个就是type的名称。

接着我们可以查询分析器当中用下面的语句来测试一下了

declare @t as emplyeetable
 
 insert into @t values(1,'terry')
 
 execute InsertEmployee @t

-------------

运行完之后,应该是可以将数据插入到数据库的,那么我们就要进入C#当中进入程序的编写了。先创建一个测试工程。

 public void TestTest()
   {
  //自己改一下连接字符串吧

  SqlConnection myconn = new SqlConnection("Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True"); 
  myconn.Open();
  SqlCommand cmd = new SqlCommand();
  cmd = myconn.CreateCommand();

//-------这里就是组装一个DataTable出来给程序。
  DataTable dt = new DataTable();
  dt.Columns.Add(new DataColumn("id",System.Type.GetType("System.Int32")));
  dt.Columns.Add(new DataColumn("name", System.Type.GetType("System.String")));

  dt.Rows.Add(1, "Terry");

//---------

  cmd.Connection=myconn ;
  cmd.CommandText="InsertEmployee";
  cmd.CommandType=CommandType.StoredProcedure;

  SqlParameter sp = new SqlParameter();
  sp.SqlDbType = SqlDbType.Structured;
  sp.TypeName = "emplyeetable";
  sp.Value = dt;
  sp.ParameterName = "@em";
  cmd.Parameters.Add(sp);
  cmd.ExecuteNonQuery();

 

 

 

 

posted on 2010-05-11 15:04  lock  阅读(424)  评论(1编辑  收藏  举报