1、添加数据库链接字符串

      当在程序中需要连接数据库时,首先需要在配置文件中添加链接字符串,配置文件一般为App.config或Web.config,然后打开配置文件

      ,在<configuration></configuration>标签中添加如下代码:

      <configuration>

         <connectionStrings>

            <add name="ConnectionString"

            connectionString="Data Source=127.0.0.1;Initial Catalog=asp_net;Integrated Security=True;Connect Timeout=30;uid=sa;pwd=jiangwei1019"

            providerName="System.Data.SqlClient" />

         </connectionStrings>

      </configuration>

    

    2、程序中引用连接字符串

       为了能在程序中调用数据库,需要在程序中通过ConfigurationManager类来获取链接字符串,具体代码如下所示。

       public string constr=ConfigurationManager.ConnectionStrings["connectionStr"].ConnectionString;


    3、编写SQL语句

       在程序中,可以根据需要对数据库进行的操作编写SQL语句,并将SQL语句以字符串的形式保存,具体代码如下所示

       string sql="select * from Student";


    4、参数化替换(SqlParameter)

       当查询数据库的SQL语句中包含查询条件时,有可能出现SQL注入***漏洞,导致程度出现安全隐患,所以需要使用SqlParameter对象进行参数化查询,具体代码如下所示

       int id=1;

       string sql="select StuName,StuNum, from Student where Id=@id";

       SqlConnection con=new SqlConnection(constr);

       SqlCommand cmd=new SqlCommand(sql,con);

       SqlParameter par=new SqlParameter("@id",id);

       cmd.Parameter.Add(par);


    5、ExecuteNonQuery()方法一般用于对数据库进行删除、修改和插入的操作,并返回对数据库的影响行数,简单地说就是通过int类型的返回值来判断操作是否成功。

        //执行增删改的

        public static int ExecuteNonQuery(string sql,params SqlParameter[] pms)

        {

            //使用using关键字定义一个范围,在范围结束时自动调用这个类实例的Dispose处理对象

            using (SqlConnection con = new SqlConnection(constr))

            {

                //创建执行sql命令对象

                using (SqlCommand cmd = new SqlCommand(sql, con))

                {

                    //判断是否传递了sql参数

                    if (pms != null)

                    {

                       //将参数添加到Parameters集合中

                        cmd.Parameters.AddRange(pms);

                    }

                    con.Open();

                    return cmd.ExecuteNonQuery();

                }

            }

        }


    6、ExecuteScalar()方法常用来执行查询单个数据的操作,并将查询结果以object类型返回。

        //执行返回单个值的

        public static object ExecuteScalar(string sql, params SqlParameter[] pms)

        {

            using (SqlConnection con = new SqlConnection(constr))

            {

                using (SqlCommand cmd = new SqlCommand(sql, con))

                {

                    if (pms != null)

                    {

                        cmd.Parameters.AddRange(pms);

                    }


                    con.Open();

                    return cmd.ExecuteScalar();

                }

            }

        }


     7、ExecuteReader()方法一般用于获取一条或多条数据,并将查询的结果以SqlDataReader类型返回。其中,cmd对象的ExecuteReader()方法的参数值CloseConnection为枚举类型,表示

        当返回的对象销毁时关闭数据库连接。

        //执行返回SqlDataReader

        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pms)

        {

            SqlConnection con=new SqlConnection(constr);

            using (SqlCommand cmd = new SqlCommand(sql, con))

            {

                if (pms != null)

                {

                    cmd.Parameters.AddRange(pms);

                }


                try

                {

                    con.Open();

                    return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);                   

                }

                catch (Exception)

                {

                    con.Close();

                    con.Dispose();

                    throw;

                }

            }

        }

     8、ExecuteDataTable()方法一般用于查询数据并以DataTable表格类型数据返回,所以代码中需要创建一个DataTable对象用于存储查询到的数据,而adapter对象的Fill()方法就是用于获取数据

        并将数据放到DataTable对象中。


        //执行返回DataTable

        public static DataTable ExecuteDataTable(string sql,params SqlParameter[] pms)

        {

            DataTable dt=new DataTable();

            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr))

            {

                if (pms != null)

                {

                   adapter.SelectCommand.Parameters.AddRange(pms);

                }

                adapter.Fill(dt);

            }

            return dt;

        }