ADO.NET 学习笔记(十一) DataSet初步封装

之前的代码中都存在大量重复性代码。例如:创建连接,打开连接,创建command。接下来我们讨论如何使得代码简洁,明了。

1、新建项目

2、新建数据库

3、

string dataDir = AppDomain.CurrentDomain.BaseDirectory;

if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))

{

dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;

AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);

}

添加至Main函数

4、添加新类SQLHelper并定义ExecuteNonQuery(string sqlMessage, params SqlParameter[] parameters)方法

class SQLHelper

{

  //ExecuteNonQuery方法:非查询语句-如Insert,Delete

  //注意点一:此处将方法写成静态,无需创建实例对象

  //注意点二:函数参数使用一个SQL语句和一个可变参数,方便向函数传入多个参数,类似于Console.WriteLine()

  //注意点三:对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1。

  //注意点四:连接字符串直接从App.config中读取,需要添加引用

  public static int ExecuteNonQuery(string sqlMessage, params SqlParameter[] parameters)

  {

    string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

    using (SqlConnection conn = new SqlConnection(connStr))

    {

      conn.Open();

      using (SqlCommand cmd = conn.CreateCommand())

      {

        cmd.CommandText = sqlMessage;

        foreach (SqlParameter myParameter in parameters)

        {

          cmd.Parameters.Add(myParameter);

        }  

        return cmd.ExecuteNonQuery();

      }

    }

  }

}

5、调用SQLHelper.ExecuteNonQuery(string sqlMessage, params SqlParameter[] parameters)方法

private void btnExecuteNonQuery_Click(object sender, EventArgs e)

{

  if (string.IsNullOrEmpty(this.tbSqlMessage.Text))

  {

    MessageBox.Show("没有可执行语句");

    return;

  }

  else

  {

    string[] myTexts = this.tbSqlMessage.Text.Split(new char[] { ',' });

    string myName = myTexts[0];

    int myAge = Convert.ToInt32(myTexts[1]);



    SQLHelper.ExecuteNonQuery("Insert into T_Person(FName,FAge) values(@FN,@FA)", new SqlParameter("FN", myName), new SqlParameter("FA", myAge));

    MessageBox.Show("添加完成");

  }            

}

6、定义ExecuteScalar(string sqlMessage, params SqlParameter[] parameters)方法

 1 class SQLHelper

 2 {

 3   //ExecuteScalar方法:查询并返回获取的第一行第一列中的值。

 4   //注意点一:第一行第一列内的值可能是任意类型,返回值类型是object。

 5   public static object ExecuteScalar(string sqlMessage, params SqlParameter[] parameters)

 6   {

 7     string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

 8     using (SqlConnection conn = new SqlConnection(connStr))

 9     {

10       conn.Open();

11       using (SqlCommand cmd = conn.CreateCommand())

12       {

13         cmd.CommandText = sqlMessage;

14         foreach (SqlParameter myParameter in parameters)

15         {

16           cmd.Parameters.Add(myParameter);

17         }

18         return cmd.ExecuteScalar();

19       }

20     }

21   }

22 }

7、调用SQLHelper.ExecuteScalar(string sqlMessage, params SqlParameter[] parameters)方法

private void btnExecuteScalar_Click(object sender, EventArgs e)

{

  //注意ExcuteScalar返回的是第一行第一列的值

  object result=SQLHelper.ExecuteScalar("select * From T_Person");

  MessageBox.Show(Convert.ToString(result));

}

未完待续

你可能感兴趣的:(.net)