ADO.NET_第七篇_OracleCommand_01ExecuteNonQuery
来源:互联网 发布:天猫交易额实时数据 编辑:程序博客网 时间:2024/04/28 03:00
+++ 下面三个例子演示如何使用OracleCommand. ExecuteNonQuery()
Oraclecommand.ExecuteNonQuery方法主要是进行用来执行目录操作(如查询数据库结构或创建数据库对象),或通过执行UPDATE,INSERT,DELETE这样的SQL语句。
+++ 例一
protected void Page_Load(object sender, EventArgs e)
{
string connStr = "Data Source=ora9; uid=scott; pwd=tiger; unicode=true";
string aVar = "AAA";
string bVar = "AAA";
string sqlStr = "INSERT INTO AB(A,B) VALUES('" + aVar + "','" + bVar + "')";
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = sqlStr;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
//int rowAffected = cmd.ExecuteNonQuery();
//Response.Write("受影响的行:" + rowAffected);
conn.Close();
conn.Dispose();
cmd.Dispose();
}
++ 说明:
1) Oraclecommand.ExecuteNonQuery方法对于UPDATE、INSERT、DELETE语句,返回值为该命令所影响的行数;对于其他类型的语句,返回值为-1;如果发生回滚,返回值为-1;
2) 本例直接用构造SQL,而没有使用OracleParameter。
+++ 例二
protected void Page_Load(object sender, EventArgs e)
{
string connStr = "Data Source=ora9; uid=scott; pwd=tiger; unicode=true";
string insertSql = "INSERT INTO AB(A,B) VALUES(:aVar,:bVar)";
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
OracleCommand cmd = new OracleCommand(insertSql, conn);
OracleParameter[] paras = {
new OracleParameter("aVar", OracleType.NVarChar, 10),
new OracleParameter("bVar", OracleType.NVarChar, 10)};
paras[0].Value = "AAA";
paras[1].Value = "AAA";
//OracleParameter[] paras = new OracleParameter[2];
//paras[0] = new OracleParameter("aVar", OracleType.NVarChar, 10);
//paras[1] = new OracleParameter("bVar", OracleType.NVarChar, 10);
//paras[0].Value = "AAA";
//paras[1].Value = "AAA";
//OracleParameter[] paras = new OracleParameter[2];
//paras[0] = new OracleParameter("aVar", "AAA");
//paras[1] = new OracleParameter("bVar", "AAA");
foreach (OracleParameter para in paras)
cmd.Parameters.Add(para);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
Response.Write("OK");
conn.Close();
}
++ 说明
1) 本例没有直接构造SQL语句,而是使用OracleParameter;
2) 虽然用OracleParameter执行SQL语句挺灵活的,但在实际项目中往往不这么做,而是直接构造SQL语句。直接构造SQL很直观,调试程序时很容易检查SQL语句是否正确。那么什么情况下使用OracleParameter呢?比如,向操作数据库的Clob字段,如果直接构造SQL语句可能存在字符串长度限制的问题。这点,在Oracle 9i上很明显,但是Oracle 11g上就基本上看不出来,但是为了保险起见,这种情况我们就使用OracleParameter。对于这个问题,我会在OracleLob(Oracle Large Object)中介绍;
3) 注释的部分是构造OracleParameter的另一个方法。
+++ 例三
protected void Page_Load(object sender, EventArgs e)
{
string msg = "";
string connStr = "Data Source=ora9; uid=scott; pwd=tiger; unicode=true";
string insertSql = "INSERT INTO AB(A,B) VALUES(:aVar,:bVar)";
OracleConnection conn = new OracleConnection(connStr);
OracleCommand cmd = new OracleCommand(insertSql, conn);
cmd.Connection.Open();
foreach (OracleParameter para in cmd.Parameters)
{
msg += para.ToString() + "/n";
}
Response.Write(msg + "</br>");
try
{
cmd.Parameters.Add(new OracleParameter("aVar", OracleType.NVarChar, 10));
cmd.Parameters["aVar"].Value = "AAA";
cmd.Parameters.Add(new OracleParameter("bVar", OracleType.NVarChar, 10));
cmd.Parameters["bVar"].Value = "AAA";
cmd.CommandType = CommandType.Text;
//cmd.Parameters.AddWithValue("aVar", "AAA");
//cmd.Parameters.AddWithValue("aVar", "AAA");
cmd.ExecuteNonQuery();
}
catch (OracleException ex)
{
MessageBox.Show("插入数据错误 from OracleException" + ex.Message);
}
catch (Exception ex)
{
MessageBox.Show("插入数据错误 from Exception" + ex.Message);
}
finally
{
cmd.Connection.Close();
}
}
++ 说明
1) 本例简单地使用了异常处理,但通常都是用事务来执行UPDATE、INSERT、DELETE语句这样的SQL语句;
2) 注释的部分是构造OracleParameter的另一个方法;
3) OracleParameter的构造函数一共有7个,自己到MSDN看吧,找一个自己最喜欢的就行。
- ADO.NET_第七篇_OracleCommand_01ExecuteNonQuery
- ADO.NET_第七篇_OracleCommand_02ExecuteReader
- ADO.NET_第七篇_OracleCommand_03ExecuteScalar
- ADO.NET_第七篇_OracleCommand_04DataSet
- ADO.NET_第七篇_OracleCommand_05执行存储过程
- ADO.NET_第四篇_OracleDataReader
- ADO.NET_第五篇_DataTable_01
- ADO.NET_第五篇_DataTable_04Merge
- ADO.NET_第五篇_DataTable_05Select
- ADO.NET_第五篇_DataTable_06Compute
- ADO.NET_第五篇_DataTable_07Relations
- ADO.NET_第五篇_DataTable_08DataView
- ADO.NET_第五篇_DataTable_09DataViewRowState
- ADO.NET_第六篇_DataSet
- ADO.NET_第九篇_OracleHelper
- ADO.NET_第二篇_OracleConnection/OracleCommand
- ADO.NET_第五篇_DataTable_03Copy/Clone
- ADO.NET_第十篇_Using关键字
- 今天有人告诉我 不喜欢我是因为她喜欢帅哥
- OpenCV编写毛玻璃效果实现(需进一步提高)
- json 字符串 简单应用
- 博主简介
- 函数优化之 基本粒子群算法
- ADO.NET_第七篇_OracleCommand_01ExecuteNonQuery
- ADO.NET_第七篇_OracleCommand_02ExecuteReader
- ext combox tree 实例 可运行 php
- Oracle 创建函数stored function
- wap2.0 前端开发须知
- 从数据字典中查询存储过程, 函数, 包
- 找素数
- POJ_3159_差分约束+heap+dijsktra
- 参数中带有&字符