您的位置:首页 > 数据库

C#中产生SQL语句的几种方式

2015-07-16 10:18 495 查看


C#中产生SQL语句的几种方式

[本文转载自:http://www.cnblogs.com/zhouhb/archive/2010/12/07/1898802.html]
(1)拼接产生SQL语句:
       string sql = "insert into czyb(yhm,mm,qx) values('" + txtName.Text + "','" + txtPassword.Text + "','" + cmbPriority.Text + "')";

       OleDbCommand cmd = new OleDbCommand(sql, conn);
       这种方法写法比较复杂,且安全性低,容易遭受SQL注入攻击。
(2)用string.Format方法:
      string sql = string.Format("insert into czyb(yhm,mm,qx) values('{0}','{1}','{2}')", txtName.Text, txtPassword.Text, cmbPriority.Text);
      只是可读性优于第(1)种。
(3)用参数化SQL语句:
      string sql="insert into czyb(yhm,mm,qx) values (@yhm,@mm,@qx)";

      OleDbCommand cmd = new OleDbCommand();

      cmd.CommandText = sql;

      cmd.Parameters.AddWithValue("@yhm", txtName.Text);

      cmd.Parameters.AddWithValue("@mm", txtPassword.Text);

      cmd.Parameters.AddWithValue("@qx", cmbPriority.Text);

      cmd.Connection = conn;

      conn.Open();

      cmd.ExecuteNonQuery();
     代码结构清楚,对于不支持存储过程的数据库(如Access),推荐采用本方法。
(4)如果数据库支持存储过程(如SQL Server),可以调用存储过程执行SQL:
        SqlConnection conn = new SqlConnection(txtConn);

        SqlCommand cmd = new SqlCommand("SearchContact", conn);  //存储过程名称为SearchContact

        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);   //传入参数

        cmd.Parameters["@name"].Value = txtName.Text.Trim();
       由于存储过程是数据库预编译的,执行效率高,推荐采用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# sql