//常用名称空间
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
//Class
namespace gg
{
//表名添加前缀做类名
public class thinUser
{
//字段名 其中id是自增列
public const string FIELD_ID="ID";
public const string FIELD_NAME="Name";
//添加、修改、删除sql
public const string SQL_UserInsert ="INSERT INTO aa (Name) VALUES (@Name);SELECT SCOPE_IDENTITY() ";
public const string SQL_UserUpdate ="UPDATE aa SET Name = @Name WHERE ID = @ID";
public const string SQL_UserDelete ="DELETE FROM aa WHERE ID = @ID";
//调用级联删除的SQL,此处需要自行维护
public const string SQL_UserDeleteCascade = "";、 //变量,没有采用属性方式,而是直接用public,可以改成属性方式访问
public int m_ID;
public string m_Name = "";
} public partial class RunTime
{
public bool UpdateUser(thinUser needUpdateUser, bool blnUpdate, out string msg)
{
SqlCommand sqlcmd = GetUserCommand(needUpdateUser, blnUpdate);
bool result = ExecCommand(sqlcmd, out msg, blnUpdate);
//新增操作并且操作成功
if (!blnUpdate && result)
{
needUpdateUser.m_ID = Convert.ToInt32(msg);
}
return result;
} public bool UpdateUser(thinUser needUpdateUser, bool blnUpdate, out string msg, IDbTransaction sqlTran)
{
SqlCommand sqlcmd = GetUserCommand(needUpdateUser, blnUpdate);
sqlcmd.Transaction = sqlTran as SqlTransaction;
bool result = ExecCommand(sqlcmd, out msg, blnUpdate);
//新增操作并且操作成功
if (!blnUpdate && result)
{
needUpdateUser.m_ID = Convert.ToInt32(msg);
}
return result;
} private SqlCommand GetUserCommand(thinUser needUpdateUser, bool blnUpdate)
{
//获取更新Division的SQL语句
string strUpdate = string.Empty;
//根据状态获取SQL语句
if (blnUpdate)
strUpdate = thinUser.SQL_UserUpdate;//更新SQL
else
strUpdate = thinUser.SQL_UserInsert;//删除SQL
//构造命令对像
SqlCommand sqlcmd = new SqlCommand(strUpdate);
//名称参数
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_NAME, needUpdateUser.m_Name)); //更新操作时需要添加ID参数,主键
if (blnUpdate)
{
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_ID, needUpdateUser.m_ID));
}
return sqlcmd;
} private SqlCommand GetUserDeleteCommand(thinUser needDelUser)
{
//获取删除Division的SQL语句
string strDelete = string.Empty;
strDelete = thinUser.SQL_UserDelete;//删除SQL
//判断该数据类型是否被传感器类型引用
//comm.Comm.ToDecimalif (
//构造命令对像
SqlCommand sqlcmd = new SqlCommand(strDelete);
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_ID, needDelUser.m_ID));
return sqlcmd;
} public bool DeleteUser(thinUser needDelUser, out string msg)
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
return ExecCommand(sqlcmd, out msg, false);
} public bool DeleteUser(thinUser needDelUser, out string msg, IDbTransaction sqlTran)
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.Transaction = sqlTran as SqlTransaction;
return ExecCommand(sqlcmd, out msg, false);
} public bool DeleteUserCascade(thinUser needDelUser, out string msg)
{
if (thinUser.SQL_UserDeleteCascade.Length == 0)
{
msg = "";
return true;
}
else
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.CommandText = thinUser.SQL_UserDeleteCascade;//删除SQL
return ExecCommand(sqlcmd, out msg, false);
}
} public bool DeleteUserCascade(thinUser needDelUser, out string msg, IDbTransaction sqlTran)
{
if (thinUser.SQL_UserDeleteCascade.Length == 0)
{
msg = "";
return true;
}
else
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.CommandText = thinUser.SQL_UserDeleteCascade;//删除SQL
sqlcmd.Transaction = sqlTran as SqlTransaction;
return ExecCommand(sqlcmd, out msg, false);
}
} }
} =====解释说明
代码是自己写的生成工具写的,用于操作一张表的,表主要用于sql server的自增表,自增列通常为id或者fid,我这里是按照id来算,如果实际应用中可以指定其他列,主要是一个新增的主键返回问题。第一部分为为表的影射,以及根据字段自动生成update、insert、delete、以及deletecascase用于级联删除操作。
本来应该将new和update分开的,结果只有在传入参数的时候判断一下,合并了。每个update和delete方法都有重载idbtransaction的,用于控制事务ExecCommand,主要就是执行命令。,如果传入的sqlcmd不包含事务信息,则打开数据连结,否则使用事务信息的连接, 事务的话在调用之前new一个传入,是IDBTranScation类型各位觉得这个类怎么样?欢迎讨论
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
//Class
namespace gg
{
//表名添加前缀做类名
public class thinUser
{
//字段名 其中id是自增列
public const string FIELD_ID="ID";
public const string FIELD_NAME="Name";
//添加、修改、删除sql
public const string SQL_UserInsert ="INSERT INTO aa (Name) VALUES (@Name);SELECT SCOPE_IDENTITY() ";
public const string SQL_UserUpdate ="UPDATE aa SET Name = @Name WHERE ID = @ID";
public const string SQL_UserDelete ="DELETE FROM aa WHERE ID = @ID";
//调用级联删除的SQL,此处需要自行维护
public const string SQL_UserDeleteCascade = "";、 //变量,没有采用属性方式,而是直接用public,可以改成属性方式访问
public int m_ID;
public string m_Name = "";
} public partial class RunTime
{
public bool UpdateUser(thinUser needUpdateUser, bool blnUpdate, out string msg)
{
SqlCommand sqlcmd = GetUserCommand(needUpdateUser, blnUpdate);
bool result = ExecCommand(sqlcmd, out msg, blnUpdate);
//新增操作并且操作成功
if (!blnUpdate && result)
{
needUpdateUser.m_ID = Convert.ToInt32(msg);
}
return result;
} public bool UpdateUser(thinUser needUpdateUser, bool blnUpdate, out string msg, IDbTransaction sqlTran)
{
SqlCommand sqlcmd = GetUserCommand(needUpdateUser, blnUpdate);
sqlcmd.Transaction = sqlTran as SqlTransaction;
bool result = ExecCommand(sqlcmd, out msg, blnUpdate);
//新增操作并且操作成功
if (!blnUpdate && result)
{
needUpdateUser.m_ID = Convert.ToInt32(msg);
}
return result;
} private SqlCommand GetUserCommand(thinUser needUpdateUser, bool blnUpdate)
{
//获取更新Division的SQL语句
string strUpdate = string.Empty;
//根据状态获取SQL语句
if (blnUpdate)
strUpdate = thinUser.SQL_UserUpdate;//更新SQL
else
strUpdate = thinUser.SQL_UserInsert;//删除SQL
//构造命令对像
SqlCommand sqlcmd = new SqlCommand(strUpdate);
//名称参数
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_NAME, needUpdateUser.m_Name)); //更新操作时需要添加ID参数,主键
if (blnUpdate)
{
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_ID, needUpdateUser.m_ID));
}
return sqlcmd;
} private SqlCommand GetUserDeleteCommand(thinUser needDelUser)
{
//获取删除Division的SQL语句
string strDelete = string.Empty;
strDelete = thinUser.SQL_UserDelete;//删除SQL
//判断该数据类型是否被传感器类型引用
//comm.Comm.ToDecimalif (
//构造命令对像
SqlCommand sqlcmd = new SqlCommand(strDelete);
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_ID, needDelUser.m_ID));
return sqlcmd;
} public bool DeleteUser(thinUser needDelUser, out string msg)
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
return ExecCommand(sqlcmd, out msg, false);
} public bool DeleteUser(thinUser needDelUser, out string msg, IDbTransaction sqlTran)
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.Transaction = sqlTran as SqlTransaction;
return ExecCommand(sqlcmd, out msg, false);
} public bool DeleteUserCascade(thinUser needDelUser, out string msg)
{
if (thinUser.SQL_UserDeleteCascade.Length == 0)
{
msg = "";
return true;
}
else
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.CommandText = thinUser.SQL_UserDeleteCascade;//删除SQL
return ExecCommand(sqlcmd, out msg, false);
}
} public bool DeleteUserCascade(thinUser needDelUser, out string msg, IDbTransaction sqlTran)
{
if (thinUser.SQL_UserDeleteCascade.Length == 0)
{
msg = "";
return true;
}
else
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.CommandText = thinUser.SQL_UserDeleteCascade;//删除SQL
sqlcmd.Transaction = sqlTran as SqlTransaction;
return ExecCommand(sqlcmd, out msg, false);
}
} }
} =====解释说明
代码是自己写的生成工具写的,用于操作一张表的,表主要用于sql server的自增表,自增列通常为id或者fid,我这里是按照id来算,如果实际应用中可以指定其他列,主要是一个新增的主键返回问题。第一部分为为表的影射,以及根据字段自动生成update、insert、delete、以及deletecascase用于级联删除操作。
本来应该将new和update分开的,结果只有在传入参数的时候判断一下,合并了。每个update和delete方法都有重载idbtransaction的,用于控制事务ExecCommand,主要就是执行命令。,如果传入的sqlcmd不包含事务信息,则打开数据连结,否则使用事务信息的连接, 事务的话在调用之前new一个传入,是IDBTranScation类型各位觉得这个类怎么样?欢迎讨论
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货