2013年8月7日星期三

ASP.NET MVC 4使用技巧5:SQL命令

在这篇文章简要介绍SQL在C#中的使用,和MVC没有太大关系。

需要:

using System.Configuration;
using System.Data.SqlClient;

譬如,Controller中的一个方法

public ActionResult Information()
{
      string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
      List<string> users = new List<string>();
      using (SqlConnection conn = new SqlConnection(connectionString))
      {
              // Open the connection
            conn.Open();
            string sql = "SELECT * FROM UserProfile";
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    users.Add(reader["UserName"].ToString());
                }
                reader.Close();  
            }
            conn.Close();
       }
       ViewBag.Message = "Info";
       return View(users);
}

先总体简要解释一下以上Controller方法代码:

其实一般而言,基本SQL操作需要以下5步,这里还是以上面的代码为例进行介绍:

1. 连接服务器

string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

using (SqlConnection conn = new SqlConnection(connectionString))

conn.Open();

2.SQL 字符串赋值(需要执行的sql命令)

string sql = "SELECT * FROM UserProfile";

3. 新建命令

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

4. 执行命令

分为三种命令,相应调用不同的方法:

a 不需要查询的(插入,更新,删除)

cmd.ExecuteNonQuery();

该函数会返回收到影响的总行数。

b 只需要查询一个值的

cmd.ExecuteScalar();

该函数会返回使用的sql语言查询的结果

譬如:

string user_name = "John";

var sql = String.Format("SELECT Company FROM UserProfile WHERE [UserName] = '{0}'", user_name);

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

{

    string test = cmd.ExecuteScalar().ToString();

}

c 需要同时查询得到多个值的

//新建一个SqlDataReader 

SqlDataReader  reader = cmd.ExecuteReader(); 

//读取一行数据到Reader中

(reader.Read())

{

//将Reader中的数据读取走

users.Add(reader["UserName"].ToString());

}

//关闭Reader

reader.Close();  


5. 关闭连接
conn.Close();

更多内容请参考:

http://www.dotnetperls.com/sqlcommand

没有评论: