我经常在 删除或更新数据时 是直接在CS文件里写完整的SQL语句(称之为方法一),方法二是采用传递参数的方式,
本人对传递参数方式不熟悉,请大家说说这两种方法的利弊。另请完整跟我说说传递参数的完整写法,谢谢!
比如:
要实现更新department表
方法一:
在cs文件里写下以下语句
update department set deppartnameid='"+did+"',departmentname='"+dname+"' ";那么方法二呢?
在数据库那里需要如何写,在CS文件里又应该如何写??
本人对传递参数方式不熟悉,请大家说说这两种方法的利弊。另请完整跟我说说传递参数的完整写法,谢谢!
比如:
要实现更新department表
方法一:
在cs文件里写下以下语句
update department set deppartnameid='"+did+"',departmentname='"+dname+"' ";那么方法二呢?
在数据库那里需要如何写,在CS文件里又应该如何写??
2.方法二的实例如下: SqlConnection conn = new SqlConnection("Data Source=192.168.101.239;Initial Catalog=simpleDb;User ID=sa;Password=;Min Pool Size=1;Max Pool Size=10000;Asynchronous Processing=True;Load Balance Timeout=60;User Instance=False");
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = "update Book set title=@title where ISBN=@isbn";
conn.Open();
comm.Parameters.Add(new SqlParameter("@title","ss"));
comm.Parameters.Add(new SqlParameter("@isbn", "10"));
Int32 i = comm.ExecuteNonQuery();
conn.Close();
comm.Dispose();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.Connection = con;
cmd.CommandText = "update table1 set column1 = @value1 where column2 = @value2";
cmd.Parameters.Add("@value1", SqlDbType.VarChar).Value = "1";
cmd.Parameters.Add("@value2", SqlDbType.Int).Value = 2;
cmd.ExecuteNonQuery();
public ProUnits AddProUnit(ProUnits pub_proUnit)
{
string sql = "Insert into pub_proUnit(proUnitNum,proUnit) values
(@proUnitNum,@proUnit)";
sql += " ; select @@identity";
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@proUnitNum",pub_proUnit.ProUnitNum),
new SqlParameter("@proUnit",pub_proUnit.ProUnit)
};
int newId = Convert.ToInt32(SqlHelper.GetScalarBySql(sql, para));
return GetProUnitById(newId); }
我一般这样写
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand();
cmd.Connection = con;
cmd.CommandText = "update table1 set column1 = :value1 where column2 = :value2";
cmd.Parameters.Add("value1", System.Data.OracleClient.OracleType.VarChar).Value = "1";
cmd.Parameters.Add("value2", System.Data.OracleClient.OracleType.Number).Value = 2;
cmd.ExecuteNonQuery();
什么叫 容易被sql注入 啊,不明白,呵呵
用存储过程的方法好还是用以下这种方式好??
System.Data.OracleClient.OracleConnection con = new System.Data.OracleClient.OracleConnection("填写链接字符串");
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand();
cmd.Connection = con;
cmd.CommandText = "update table1 set column1 = :value1 where column2 = :value2";
cmd.Parameters.Add("value1", System.Data.OracleClient.OracleType.VarChar).Value = "1";
cmd.Parameters.Add("value2", System.Data.OracleClient.OracleType.Number).Value = 2;
cmd.ExecuteNonQuery();
一般通过传递值到数据库操作类实现数据操作
可看看petshop
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "update xmenu set menuname=:value1,pagename=:value2 where menuid=:value3";
cmd.Parameters.Add("value1", System.Data.OracleClient.OracleType.VarChar).Value = "aaaa";
cmd.Parameters.Add("value2", System.Data.OracleClient.OracleType.VarChar).Value = "bbbb";
cmd.Parameters.Add("value3", System.Data.OracleClient.OracleType.VarChar).Value = "001";
cmd.ExecuteNonQuery; 执行到cmd.ExecuteNonQuery;这句时出错,提示为: 编译器错误消息: CS0201: 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句 问题出在哪啦??