十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
您可以使用 OracleTransaction 类的 Save() 方法在事务中设置保存点。 如果您有一个非常长的事务并且希望能够仅回滚到某个特定的时间点,那么您可能要使用保存点。例如,您可能想对 10 个产品做一些更改,然后设置一个保存点,然后再对另 10 个产品做更改;如果您在进行第二批更改时出现了错误,那么您可以回滚至保存点,使您的第一批更改原封不动。 我将带您逐步完成演示如何使用保存点的 C# (TransExample2.cs) 示例程序和 VB.NET (TransExample2.vb) 示例程序中的相关新步骤。这些程序向表 products 中添加一行,设置一个保存点,向表 products 中添加另一行,回滚至保存点,然后从表 products 中读取这些行。在回滚至保存点后,只有添加到表 products 中的第一行保留了下来:第二行将已被删除。 第1 到第 3 步与“在 C# 和 VB.NET 中使用数据库事务”部分中所示的步骤相同,因此在这里将其省略。 第4 步 向表products 中添加一行,该行的产品 ID 为 6。 在C# 中: myOracleCommand.CommandText = "INSERT INTO products (" + " product_id, product_type_id, name, description, price" + ") VALUES (" + " 6, 2, 'Man from Another World', ' Man from Venus lands on Earth', 24.99" + ")"; myOracleCommand.ExecuteNonQuery();在VB.NET 中: myOracleCommand.CommandText = _ "INSERT INTO products (" _ " product_id, product_type_id, name, description, price" _ ") VALUES (" _ " 6, 2, 'Man from Another World', 'Man from Venus lands on Earth', 24.99" _ ")" myOracleCommand.ExecuteNonQuery()第5 步 使用OracleTransaction 的 Save() 方法设置一个名为 SaveProduct 的保存点。 在C# 中: myOracleTransaction.Save("SaveProduct");在VB.NET 中: myOracleTransaction.Save("SaveProduct")第6 步 向表products 中添加另一行,该行的产品 ID 为 7。 在C# 中: myOracleCommand.CommandText = "INSERT INTO products (" + " product_id, product_type_id, name, description, price" + ") VALUES (" + " 7, 2, 'Z-Files', 'Mysterious stories', 14.99" + ")"; myOracleCommand.ExecuteNonQuery();在VB.NET 中: myOracleCommand.CommandText = _ "INSERT INTO products (" _ " product_id, product_type_id, name, description, price" _ ") VALUES (" _ " 7, 2, 'Z-Files', 'Mysterious stories', 14.99" _ ")" myOracleCommand.ExecuteNonQuery()第7 步 回滚到先前在第 5 步中设置的 SaveProduct 保存点。 在C# 中: myOracleTransaction.Rollback("SaveProduct");在VB.NET 中: myOracleTransaction.Rollback("SaveProduct")完成回滚后,在第 6 步中添加的第二行已被删除,而在第 4 步中添加的第一行保留了下来。 TransExample2.cs 和 TransExample2.vb 中剩下的步骤显示表 products 的内容,回滚整个事务并从数据库断开。 用于Microsoft Transaction Server 的 Oracle 事务服务的快速说明。Microsoft Transaction Server 是一个运行在互联网或网络服务器上的专有事务处理系统。Microsoft Transaction Server 为客户端计算机部署和管理应用程序和数据库事务请求。 Microsoft Transaction Server 是以服务器为中心的三层体系结构模型的一个组件。这种方法实现了将应用程序的表示、业务逻辑和数据元素清晰地分布到在一个网络中连接的不同计算机上。无需专门集成,您就可以在与 Oracle 数据库服务器 8.0.6 版或更高版本连接的 Microsoft Transaction Server 中部署一个组件,但首先您必须安装 Oracle Services for Microsoft Transaction Server。 结论在本文中,您系统学习了在 .NET 程序中使用数据库事务。 (T004)
站在用户的角度思考问题,与客户深入沟通,找到资溪网站设计与资溪网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖资溪地区。
调用api
在Visual Baisc.net中的声明:
Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = H2 '模拟鼠标左键按下
Public Const MOUSEEVENTF_LEFTUP = H4 ’模拟鼠标左键释放
Public Const MOUSEEVENTF_MIDDLEDOWN = H20 '模拟鼠标中间键按下
Public Const MOUSEEVENTF_MIDDLEUP = H40 '模拟鼠标中间键释放
Public Const MOUSEEVENTF_RIGHTDOWN = H8 '模拟鼠标右键按下
Public Const MOUSEEVENTF_RIGHTUP = H10 '模拟鼠标右键释放
Public Const MOUSEEVENTF_MOVE = H1 '模拟鼠标指针移动
例:
mouse_event MOUSEEVENTF_LEFTDOWN,10,10,0,0
'在(10,10)模拟鼠标左键按下
Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
i = i + 1
If i = 1 Then
MsgBox("我是代码一")
ElseIf i = 2 Then
MsgBox("我是代码二" Now)
Else
MsgBox("我是其他")
End If
End Sub
1 新建安装部署项目
打开VS2005,点击新建项目,选择:其他项目类型-安装与部署-安装向导(安装项目),然后点击确定。
2 安装向导
关闭后打开安装向导,点击下一步,或者直接点击完成。
3 开始制作
安装向导完成后即可进入项目文件夹:
双击"应用程序文件夹"在右边的空白处右击,选择添加-文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。这样安装程序安装完成后会在 "开始-所有程序"和"桌面"上生成程序的快捷方式。也可以直接在"用户的'程序'菜单"和"用户桌面"相应目录下新建快捷方式,然后定位到你的文件。
然后右击左边的"应用程序文件夹"打开属性对话框:将属性中的"DefaultLocation"的路径中的"[Manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"C:\Program Files\你的用户名\安装解决方案名称";
然后打开解决方案管理器,右击你的解决方案名称,选择属性:打开的属性页中,选择"系统必备", 在打开的系统必备页中,在"指定系统必备安装组件的位置"中选中如下选择项:从与我的应用程序相同的位置下载系统必备组件。选上以后,在生成的安装文件包中包含.NetFramework组件 。好了,这样就完成99%了,然后点击"生成-生成解决方案",生成成功!
我以前参考过的,希望对你有帮助。
安装完成后自动启动程序
1.新建一个空的项目InstallCompenent,步骤为:解决方案-右键添加-新建项目-选择"空项目"-输入名称"InstallCompenent"-确定,完成项目的添加.
2.在InstallCompenent项目中右键-添加-新建项-选择安装程序类-输入名称"Installer",完成installer类的添加.
修改代码为:
/// summary
/// 功能是做安装项目主项目输出
/// 实现安装过程中的一些操作
/// 如:安装完成后启动项目
/// /summary
[RunInstaller(true)]
public partial class Installer : Installer
{
/// summary
/// 应用程序入口
/// /summary
public static void Main()
{
}
/// summary
/// 构造函数
/// /summary
public ECSuitsInstaller()
{
InitializeComponent();
}
/// summary
/// 重写安装完成后函数
/// 实现安装完成后自动启动已安装的程序
/// /summary
/// param name="savedState"/param
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
Assembly asm = Assembly.GetExecutingAssembly();
string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
System.Diagnostics.Process.Start(path + "\\ECSuits.exe");
}
/// summary
/// 重写安装过程方法
/// /summary
/// param name="stateSaver"/param
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
/// summary
/// 重写安装之前方法
/// /summary
/// param name="savedState"/param
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
}
/// summary
/// 重写卸载方法
/// /summary
/// param name="savedState"/param
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
/// summary
/// 重写回滚方法
/// /summary
/// param name="savedState"/param
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
}
3.在安装项目中右键-添加项目输出-选择"项目"-InstallCompenent.
完成主输出项目的添加.
4.打开自定义操作编辑器,在安装-右键-添加自定义操作-选择"应用程序文件夹"-选择"主输出来自InstallCompenent",完成添加.
记录滚动条位置,回发时重新设位置。
//刷新时滚动条保留位置
$().ready(function(){
ScrollToSelectNode();
})说明:left为div,divscrollvalue是一个hidden
function ScrollToSelectNode() {
var y = document.getElementById("%=divScrollValue.ClientID %").value;
if (y == "")
y = 0;
document.getElementById("left").scrollTop = y;
}
点击执行:
function bindData() {
document.getElementById("%=divScrollValue.ClientID %").value = document.getElementById("left").scrollTop;
}
补充:input type="hidden" runat="server" id="divScrollValue" /这个是hiddenfild控件记录滚动条位置的。另外以上是js代码是写到前台的。如a onclick="bindData()"第一级/a
$().ready(function(){
ScrollToSelectNode();
})这一句是jquery,如果不用jquery就在body加上onload="scrolltoselectNode()"