首先,要会使用配置文件,项目点右键-->添加-->新建项-->应用程序配置文件,名称一定要写成App.config,然后在引用点右键-->添加引用-->在.NET一栏里找到System.configuration点击确定,这样就设置完了,然后打开配置文件写上
<connectionStrings>
<add name="dbConnStr" connectionString="Data Source=服务器名/实例名;Initial Catalog=数据库名;User ID=用户名;Password=密码"/>
</connectionStrings>
其次,项目点右键-->添加-->类,名字SqlHelper,建好类后,下面给一段我自学之后自己写的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace ADONET2
{
class SqlHelper
{
private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
////封装方法原则:把不变的放到方法里,把变化的放到参数里
//public static int ExecuteNonQuery(string sql)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using(SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// return cmd.ExecuteNonQuery();
// }
// }
//}
//public static object ExecuteScalar(string sql)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using(SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// return cmd.ExecuteScalar();
// }
// }
//}
////DataSet只用来查询结果比较少的sql
//public static DataSet ExecuteDataSet(string sql)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// DataSet dataSet = new DataSet();
// adapter.Fill(dataSet);
// return dataSet;
// }
// }
//}
////上面的方法和下面的方法比较,下面的更简单一点,直接简化到DataTable,因为一般查询有且只有一个表
//public static DataTable ExecuteDataTable(string sql)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// DataSet dataSet = new DataSet();
// adapter.Fill(dataSet);
// return dataSet.Tables[0];
// }
// }
//}
//实行参数化查询的方法,跟上面比较
//public static int ExecuteNonQuery(string sql,SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// //foreach(SqlParameter param in parameters)
// //{
// // cmd.Parameters.Add(param);
// //}
// //用AddRange直接代替了foreach的遍历
// cmd.Parameters.AddRange(parameters);
// return cmd.ExecuteNonQuery();
// }
// }
//}
//public static object ExecuteScalar(string sql,SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// cmd.Parameters.AddRange(parameters);
// return cmd.ExecuteScalar();
// }
// }
//}
////DataSet只用来查询结果比较少的sql
//public static DataSet ExecuteDataSet(string sql,SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// cmd.Parameters.AddRange(parameters);
// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// DataSet dataSet = new DataSet();
// adapter.Fill(dataSet);
// return dataSet;
// }
// }
//}
////上面的方法和下面的方法比较,下面的更简单一点,直接简化到DataTable,因为一般查询有且只有一个表
//public static DataTable ExecuteDataTable(string sql,SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// cmd.Parameters.AddRange(parameters);
// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// DataSet dataSet = new DataSet();
// adapter.Fill(dataSet);
// return dataSet.Tables[0];
// }
// }
//}
//使用长度可变参数来简化
public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
//foreach(SqlParameter param in parameters)
//{
// cmd.Parameters.Add(param);
//}
//用AddRange直接代替了foreach的遍历
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
}
}
//DataSet只用来查询结果比较少的sql
public static DataSet ExecuteDataSet(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
return dataSet;
}
}
}
//上面的方法和下面的方法比较,下面的更简单一点,直接简化到DataTable,因为一般查询有且只有一个表
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
return dataSet.Tables[0];
}
}
}
}
}
我以上写了3种方法,大家可以看后进行比较一下,调用的时候就直接SqlHelper.方法名(Sql语句,new SqlParameter()......) |