C#中产生SQL语句的几种方式
2010-12-07 10:59
330 查看
(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();
由于存储过程是数据库预编译的,执行效率高,推荐采用。
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语句的几种方式
- C#中产生SQL语句的几种方式
- sql语句删除数据库表的几种方式及区别
- MySQL笔记-执行SQL语句的几种方式
- mysql 复制表的几种方式以及常用的sql语句
- 优化sql 语句的几种方式
- mybatis 构建SqlSessionFactory的几种方式 以及调用sql映射语句的几种方式
- sql语句删除数据库表的几种方式及区别
- SQL循环语句的几种方式
- mysql 复制表的几种方式以及常用的sql语句
- C#不同数据库连接方式对应的Sql语句的构造
- C#中使用SQL语句生成DataTable,对不同的数据库,处理方式不同,返回的结果属性不同
- 利用SQL语句产生分组序号
- C# 执行oracle sql 语句出现中文不兼容的问题
- C#拼接SQL语句,SQL Server 2005+,多行多列大数据量情况下,使用ROW_NUMBER实现的高效分页排序
- C# DataTableToExcel的几种实现方式及遇到的问题
- C#执行异步操作的几种方式比较和总结
- SQL 2008提供几种数据同步方式
- SQL解析IP地址的几种方式
- C#中几种常用的等价类型和语句