static private void CreateOleDbCommand(
string queryString, string connectionString)
{
using (OleDbConnection connection = new
OleDbConnection(connectionString))
{
connection.Open();
OleDbCommand command = new
OleDbCommand(queryString, connection);
intRows = command.ExecuteNonQuery(); // 执行, 并返回受影响的行数
}
}
解决方案 »
- 网页加载大量的数据,CPU占用率100%
- 服务器端调用客户端JS方法
- 请给初学者推荐一本关于“ 如何设计 面向对象程序 的书 ”,请有老程序员给推荐一本好书 ##########
- 怎么才能让winform用户控件能在属性设计器中看到自定义属性?
- 100分求像超市中扫描条形码的程序,如何获取扫描得到的数据
- 问个C#WinForm的菜鸟问题
- 100分——谁有Salamander .NET Decompiler?
- 怎样用代码实现增、差Grid表的行和列呀?
- 俺怎么没有办法安装 visual studio.net?
- 怎样编制系统托盘程序?
- 问题是这样的?
- Socket 编程经验谈---如何处理socket连接后服务器端或客户端的断开
对连接执行 Transact-SQL 语句并返回受影响的行数。
用ExecuteNonQuery方法...参与代码:
SqlCommand SqlCmd = new SqlCommand(sql, this.SqlCon);
int rows = SqlCmd.ExecuteNonQuery();不返回数据集用ExecuteNonQuery
返回数据集填充到datatable后用DataTable.Rows.Count
但是我这里调用oracle连接都是封装过了,就是这句new SqlCommand(sql, this.SqlCon)没有办法用到,我那是一层层调用的
public static int DeleteOneTablesData(string tableName)
{
try
{
DataSet ds = DBOperation.FillDataSet_SQL(SqlList.DeleteOneTablesData(tableName));
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return Convert.ToInt32(string.IsNullOrEmpty(ds.Tables[0].Rows[0][0].ToString())
? 0 : ds.Tables[0].Rows[0][0]);
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
}然后调用sqlList文件的方法
public static string DeleteOneTablesData(string tableName)
{
return string.Format("update {0} set ifdelete = 1 where ifdelete = 0", tableName);
}
现在的问题是如何在这个基础上获取它更新后影响的行数
conn.open();
string sql ="";
sqlcommand cmd = new sqlcommand(sql,conn);int r = command.ExecuteNonQuery(); 实在不行,你就再执行个sql语句,查询ifdelete = 0的有多少行
select count(*) from table where ifdelete = 0
在涉及到oracle连接的时候有两个文件,一个是DBOperation.cs
里面是这样的一堆方法
namespace JurenTutorCRM.DB
{
public class DBOperation
{
public DBOperation()
{
//
// TODO: Add constructor logic here
//
}
#region FillDataSet
/// <summary>
/// 填充数据集——存储过程-不带参数
/// </summary>
/// <param name="proname">存取过程名</param>
/// <returns></returns>
public static DataSet FillDataSet(string proname)
{
DataSet dr = new DataSet();
OracleHelper.FillDataset(OracleHelper.connString, CommandType.StoredProcedure, proname, dr, new string[] { "tables" });
return dr;
}
/// <summary>
/// 填充数据集——sql语句-不带参
/// </summary>
/// <param name="sqlText"></param>
/// <returns></returns>
public static DataSet FillDataSet_SQL(string sqlText)
{
DataSet dr = new DataSet();
OracleHelper.FillDataset(OracleHelper.connString, CommandType.Text, sqlText, dr, new string[] { "tables" });
return dr;
}
/// <summary>
/// 填充数据集——sql语句-带参数
/// </summary>
/// <param name="sqlText">sql语句</param>
/// <param name="parms">参数</param>
/// <returns></returns>
public static DataSet FillDataSet_SQL(string sqlText, OracleParameter[] parms)
{
DataSet dr = new DataSet();
OracleHelper.FillDataset(OracleHelper.connString, CommandType.Text, sqlText, dr, new string[] { "tables" }, parms);
return dr;
}
public static DataSet FillDataSet_SQL(OracleTransaction tr, string sqlText)
{
DataSet dr = new DataSet();
OracleHelper.FillDataset(tr, CommandType.Text, sqlText, dr, new string[] { "tables" });
return dr;
}
然后还有一个文件是OracleHelper.cs
里面是一堆这样的方法
public static void FillDataset(string connectionString, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames)
{
if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");
if (dataSet == null) throw new ArgumentNullException("dataSet"); // Create & open a OracleConnection, and dispose of it after we are done
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open(); // Call the overload that takes a connection in place of the connection string
FillDataset(connection, commandType, commandText, dataSet, tableNames);
}
}所以我现在不知道该怎么办了
c#访问Oracle数据库用的是OracleConnection,OracleCommand等楼上说的oledb是用来访问Access的楼主你把oracleSql = "update tableName set ifdelte = 1 where ifdelete = 0";
换成//conn是指数据库连接OracleConnnection的名字换成你的数据库连接对象的名字
OracleCommand com = conn.CreateCommand();
com.CommandText="update tableName set ifdelte = 1 where ifdelete = 0";
int i =com.ExecuteNonQuery();
//返回的i就是影响的记录数或者//conn是指数据库连接OracleConnnection的名字,换成你的数据库连接对象的名字
OracleCommand com = conn.CreateCommand();
int i =com.ExecuteNonQuery("update tableName set ifdelte = 1 where ifdelete = 0",conn);
//返回的i就是影响的记录数
{
get
{
if (conn == null)
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ToString());
conn.Open();
}
else if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
else if (conn.State == ConnectionState.Broken)
{
conn.Close();
conn.Open();
}
return conn;
}
} /// <summary>
/// 返回受影响行数方法(添删改公共调用的方法)
/// </summary>
/// <param name="sql"></param>
/// <param name="pmts"></param>
/// <returns></returns>
public static int ExcuteQuery(string sql, SqlParameter[] pmts)
{
SqlCommand comm = new SqlCommand(sql, Conn);
if (pmts != null)
{
comm.Parameters.AddRange(pmts);
}
int rows = comm.ExecuteNonQuery();
return rows;
}
这样写 什么都解决了.
//信息修改成功
ShowMessageBox.ShowOKButtonInfomationBox(ClientFormResource.AlterSuccess,
ClientFormResource.MessageCaption);
// 更新影响行数
int returnRow = Convert.ToInt32(logicFactory.DeleteOneTableData(strTablesName));
//刷新
ShowData(1);
调用逻辑层LogicFactory.cs
/// <summary>
/// 获取更新表所影响的行数
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public int DeleteOneTableData(string tableName)
{
return Admin.Admin.DeleteOneTableData(tableName);
}
调用逻辑文件 admin.cs
/// <summary>
/// 获取更新表所影响的行数
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public static int DeleteOneTableData(string tableName)
{
return DBOperation.ExecuteReturnNum(SqlList.DeleteOneTableData(tableName));
调用sqlList文件
/// <summary>
/// 获取更新表所影响的行数
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public static string DeleteOneTableData(string tableName)
{
return string.Format("update {0} set ifdelete = 1 where ifdelete = 0",tableName);
}
和数据层DBOperation.cs,
/// <summary>
/// 攻取更新表影响行数
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
//(这个方法是我自己在DB封装里添加的)
public static int ExecuteReturnNum(string sql)
{
int i = OracleHelper.ExecuteNonQuery(OracleHelper.connString, CommandType.Text, sql);
return i;
}
oracle连接调用
public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText)
{
// Pass through the call providing null for the set of SqlParameters
return ExecuteNonQuery(connectionString, commandType, commandText, (OracleParameter[])null);
}以上大致就是这样,谢谢大家
C# codestatic private void CreateOleDbCommand(
string queryString, string connectionString)
{
using (OleDbConnection connection = new
OleDbConnection(connectionString))
{
connection.Open();
OleDbCommand command = new
OleDbCommand(queryString, connection);
intRows = command.ExecuteNonQuery(); // 执行, 并返回受影响的行数
}
}