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;
}