天天看点

C#.NET使用存储过程

       刚学C#一个多月,很多还不了解,直到这两天才学会调用Sql Server的存储过程,呵呵,见笑了。不过还好,至少是会用了,多少有一点安慰。现在就拿出来出出丑,让各位高手指点一下,也让各位和我一样初入门的参考一下。

       数据库的连接过程就不多说了,就从存储过程开程吧(什么?还不会连接数据库?对不起,下面的你不用看了,呵呵。开玩笑,看了也无所谓!)。假如数据库中有一个名为Contac(ContactID int, Name varchar(60) )的表,那么我们就建一个可以对该表中Name进行查询的存储过程吧(该存储过程名字为Select_Contact_ByName):

CREATE Proc Select_Contact_ByName

@Name Varchar(60) = ''

As

if( @Name = '' Or @Name = null )

 Select * From Contact

else

 Select * From Contact Where Name  Like '%'[email protected]+'%'

GO

        该过程很简单,就是让你输入一个值,然后数据将用该值对Name进行模糊查询;该值也可以为空,这时数据库返回表中所有一记录。

        好了,该是C#程序部分了。首先程序中有一个DataGrid,用来显示数据;有一个TextBox和一个Button,TextBox用来让用户输入查询关键字,按Button开始查询。查询的关键代码如下:

   string Name = tb.Text.Trim();            //这是用户在TextBox中输入的数据。

   da.SelectCommand = new SqlCommand("Select_Contact_ByName",cn);  //da 为SqlDataAdapter ,用它调用存储过程

   da.SelectCommand.CommandType = CommandType.StoredProcedure;  //这一句表示SqlDataAdapter调用执行的是一个存储过程。如果没有这一句,该存储过程将不会被执行。

   da.SelectCommand.Parameters.Add(new SqlParameter("@Name",SqlDbType.VarChar,60)); //向存储过程传入一个参数。

   da.SelectCommand.Parameters["@Name"].Value = Name; 

   cn.Open();   //cn 是一个SqlConnection,即打开数据连接

   da.Fill(ds,"ct"); //ds是一个DataSet,,将数据增入DataSet的ct表中。

   cn.Close();

   dg.DataSource = ds.Tables["ct"]; //dg即为程序中的DataGrid,这里将它的数据源设置为读来的表ct。

        程序就是这样了,怎么样,还简单吧?什么?不知道我在说什么?我吐血!!!