请求大神帮我调试一下程序,代码如下: 我输入:1,4,4时,结果是错的。调试后,发现只有a的值是正确的

22:17 提问
c#大神来,帮我调试一下代码
将连接数据库的方法写在了类里面,
form中调用类中连接数据库的方法,可是有错误,改来改去总是有各种错误,
求大神帮忙看看。
按赞数排序
看下报什么错误。你的链接字符串中有多余的空格,需要去掉。另外你的sql实例名是不是SQLEXPRESS,数据库名是否正确,是否是混合验证,sa密码是否是123,这些都要看你的数据库的设置。
假设你的连接串没有问题的前提下,1.你这里的 OpenDataSource类只是保存一个String 字符串没有别的功能,可以删掉,把String字符串放到Form的窗体中去。
如果确实这样一个类来封装操作数据库,可以百度一下别人封装好的SqlHelper类。
2.Form中的类的SqlConnection 对象connection 一直是null,没有值。
3.按照你的代码,我简单改了一下,你试下可以用不?
如有错,再联系。。。
using System.Collections.G
using System.D
using System.Data.SqlC
using System.D
using System.L
using System.T
using System.Windows.F
namespace BlogText
public partial class Form1 : Form
public Form1()
InitializeComponent();
//OpenDataSource open = new OpenDataSource();
static string connString = "
Data Source=.\SQLEXPRESS ;InitialCatalog=_1009User ID = pwd = 123";
private void button1_Click(object sender, EventArgs e)
SqlConnection connection = new SqlConnection(connString);
connection.Open();
//打开数据库连接
//open.openDataSource();//调用连接数据库的方法
this.richTextBox1.Text += "打开数据库连接成功!\n";
catch (Exception ex)
MessageBox.Show(ex.Message);
connection.Close();
//关闭数据库连接
public class OpenDataSource
public void openDataSource()//连接数据库的方法
// 数据库连接字符串
string connString =
Data Source=.\\SQLEXPRESS ;Initial Catalog=_1009User ID = pwd = 123";
// 创建 Connection 对象
SqlConnection connection = new SqlConnection(connString);
connection.Open();
//打开数据库连接
这是连接数据库的类的代码
这是form1中的代码
public partial class Form1 : Form
public Form1()
InitializeComponent();
OpenDataSource open = new OpenDataSource();
private void button2_Click(object sender, EventArgs e)
open.openDataSource();//调用连接数据库的方法
this.richTextBox1.Text += "打开数据库连接成功!\n";
catch (Exception ex)
MessageBox.Show(ex.Message);
connection.Close();
//关闭数据库连接
不好意思,刚刚少说了一点,需要把OpenDataSource的类给删掉。
连接我自己的数据库是没有问题的。
using System.Collections.G
using System.D
using System.Data.SqlC
using System.D
using System.L
using System.T
using System.Windows.F
namespace BlogText
public partial class Form1 : Form
public Form1()
InitializeComponent();
//OpenDataSource open = new OpenDataSource();
//static string connString = "
Data Source=.\SQLEXPRESS ;InitialCatalog=_1009User ID = pwd = 123";
string connString = " Data Source =.;Initial Catalog = QunInfo9;User Id =Password = 123456";
private void button1_Click(object sender, EventArgs e)
//open.openDataSource();//调用连接数据库的方法
SqlConnection connection = new SqlConnection(connString);
connection.Open();
//打开数据库连接
this.richTextBox1.Text += "打开数据库连接成功!\n";
catch (Exception ex)
MessageBox.Show(ex.Message);
connection.Close();
//关闭数据库连接
我那个去,图传错了。。。。。
这是一个错误。。。
你在form1里有个connection对象
在OpenDataSource类的openDataSource方法也有个connection对象
但是:虽然这两个对象名字一样,但是它们一点关系也没。
也就是说一旦openDataSource方法执行完了,里面的局部变量,也就是connection就丢失了。。。
解决方法是把connection设为OpenDataSource类的一个成员,然后把这个成员传给form1里的connection
public class OpenDataSource
//&---这里要把connetion作为类的成员,这样form才能用
public void openDataSource()//连接数据库的方法
// 数据库连接字符串
string connString =
Data Source=.\\SQLEXPRESS ;Initial Catalog=_1009User ID = pwd = 123";
// 创建 Connection 对象
connection = new SqlConnection(connString);
connection.Open();
//打开数据库连接
private void button2_Click(object sender, EventArgs e)
OpenDataSource open = new OpenDataSource();
open.openDataSource();//调用连接数据库的方法
connection=open.
把错误提示截图发上来看看
其他相似问题还没有帐号? 赶紧
用户名:&&密码:登录注册
驱动求大神帮调试一下哪错了,,,会蓝屏。
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
&为何要写本驱动呢,因为游戏有个DLL一直在遍历进程,如果发现新进程,就会进行查杀。我不知道游戏的检测机制是什么,所以没办法防止,只能通过驱动保护自己的进程了,,&&下面是驱动代码,一加载就蓝屏,求帮忙调试一下,找到错在哪,,另外游戏的那个保护DLL,好像有MD5验证,不能修改。一修改就会提示客户端损坏,,游戏是VS平台,,,&&&&&&&&&&&&#include &NTDDK.h& //这里包含需要用C方式编译的头文件&&&&&&typedef struct ServiceDescriptorEntry&&{&&&&&&&unsigned int *ServiceTableB&&&&&&&&&&//指向系统服务程序的地址(SSDT)&& &&&&&unsigned int *ServiceCounterTableB&& //指向另一个索引表,该表包含了每个服务表项被调用的次数;不过这个值只在Checkd Build的内核中有效,在Free Build的内核中,这个值总为NULL&& &&&&&unsigned int NumberOfS&&&&&&&&&& //表示当前系统所支持的服务个数&& &&&&&unsigned char *ParamTableB&&&&&&&&&& //指向SSPT中的参数地址,它们都包含了NumberOfService这么多个数组单元&& &} ServiceDescriptorTableEntry , *PServiceDescriptorTableE&&&&&&extern PServiceDescriptorTableEntry KeServiceDescriptorT//KeServiceDescriptorTable为导出函数&& &&typedef NTSTATUS (*NTOPENPROCESS)(&&&&&&& OUT PHANDLE ProcessHandle, &&&&& IN ACCESS_MASK DesiredAccess, &&&&& IN POBJECT_ATTRIBUTES ObjectAttributes, &&&&& IN PCLIENT_ID ClientId & );&&//定义一个NtOpenProcess的函数指针&&NTOPENPROCESS&&pRealOpenP&ULONG RealServiceA&&&&&&&&&&&&&&&&//接受被hook的函数地址&& &CHAR *OpenName = &Client.exe&;&&&&&&//这里就是我们的进程名&&&UCHAR *PsGetProcessImageFileName( IN PEPROCESS Process ); &&int hookstate=0;&BOOLEAN IsProtect(CHAR *temp)&&&&&&&&&&&&//判断正在结束的进程是否是我们要保护的进程&& &{&&&&&&&ULONG len = strcmp(OpenName, temp);&&&&&&&if(!len)&&&&&&&&&&&return TRUE;&&&&&&&return FALSE;&&&}&&&&&NTSTATUS MyNtOpenProcess(OUT PHANDLE ProcessHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN PCLIENT_ID ClientId )//我们自己的NtOpenProcess&& &{&&&&&&&NTSTATUS&&&&&NTSTATUS&&& PEPROCESS&&//接受通过ProcessHandle返回的进程&& &&&&&&&&&&&&CHAR *pName=NULL;&&&&&&&&//接受进程的进程名&& &&&&&rt=(NTSTATUS)pRealOpenProcess( ProcessHandle,DesiredAccess, ObjectAttributes, ClientId ); &&&&&&&&&&&&&&status = ObReferenceObjectByHandle(ProcessHandle,&&&&&&&&&FILE_READ_DATA,0,KernelMode,&process,NULL);&&&&//获取进程&& &&&&&&&&&& // if(!NT_SUCCESS(status))&& &&&&& //&& return (NTSTATUS)(NTSTATUS)pRealOpenProcess( ProcessHandle, AccessMask, ObjectAttributes, ClientId );&&&&&&&&&&&&&&pName = (CHAR*)PsGetProcessImageFileName(process); //获取进程名&& &&&&&if(IsProtect(pName)) //判断是否是我们要保护的进程,是则返回权限不足,否则调用原函数结束进程&& &&&&&{&&&&&&&&&&&ProcessHandle = NULL;&&&&&&&&&return STATUS_ACCESS_DENIED; &&&&&}&&&&&&&&&&&&&&&&}&&&&VOID Hook()&&&{&&&&&&&&&&&&ULONG A&&&&&&&hookstate=1;&&&&&Address = (ULONG)KeServiceDescriptorTable-&ServiceTableBase + 0x7A * 4; // xp 0x7A&& &&&&&RealServiceAddress = *(ULONG*)A&&&&&&&pRealOpenProcess = (NTOPENPROCESS)RealServiceA&&&&&&&__asm{//去掉内存保护&& &&&&&&&&&cli&&&&&&&&&&&&&&&mov eax,cr0&&&&&&&&&&&&&&&and eax,not 10000h&&&&&&&&&&&&&&&mov cr0,eax&&&&&&&}&&&&&&&*((ULONG*)Address) = (ULONG)MyNtOpenP //替换为我们自己的NtTerminateProcess函数&& &&&&&__asm{//恢复内存保护&&&&&&&&&&&&&mov eax,cr0&&&&&&&&&&&&&&&or eax,10000h&&&&&&&&&&&&&&&mov cr0,eax&&&&&&&&&&&&&&&sti&&&&&&&}&&&}&&&&&&VOID Unhook()&&&{&&&&&&&if(1==hookstate)&&&&&{&&&&&&&&&ULONG A&&&&&&&&&&&Address = (ULONG)KeServiceDescriptorTable-&ServiceTableBase + 0x7A * 4; //&& &&&&&&&&&__asm{&&&&&&&&&&&&&&&cli&&&&&&&&&&&&&&&&&&&mov eax,cr0&&&&&&&&&&&&&&&&&&&and eax,not 10000h&&&&&&&&&&&&&&&&&&&mov cr0,eax&&&&&&&&&&&}&&&&&&&&&&&*((ULONG*)Address) = (ULONG)RealServiceA&& &&&&&&&&&__asm{&& &&&&&&&&&&&&&mov eax,cr0&&&&&&&&&&&&&&&&&&&or eax,10000h&&&&&&&&&&&&&&&&&&&mov cr0,eax&&&&&&&&&&&&&&&&&&&sti&&&&&&&&&&&}&&&&&&&}&}&&&&&&VOID OnUnload(IN PDRIVER_OBJECT DriverObject)&&&{&&&&&&&DbgPrint(&Unhooker unload!&);&&&&&&&Unhook();&&&}&&&&&&NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)&&&{&&&&& &&&&&DriverObject-&DriverUnload = OnU&& &&&&&DbgPrint(&Unhooker load&);&&&&&&&Hook();&&&&&&&return STATUS_SUCCESS;&&&}
UID:34894
在线时间273小时
金钱275威望260贡献值10社区警告0诚信值0账号服务0热心值1
我x&& 你ssdt&&hook&&以后做过滤 , 正常 的 情况你 没处理的?&&你没跳回 到原始函数 干活, 不蓝 就奇怪了
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 lsylmxl 的帖子
:我x&& 你ssdt&&hook&&以后做过滤 , 正常 的 情况你 没处理的?&&你没跳回 到原始函数 干活, 不蓝 就奇怪了 &( 11:01)&&&正常情况有处理。。不是这的问题,我修改了还是蓝屏。
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 _nop 的帖子
:&&&&rt=(NTSTATUS)pRealOpenProcess( ProcessHandle,DesiredAccess, ObjectAttributes, ClientId ); G)G5eXXX&&&&&&&&&&& &d&B:&&&判断下NTSTATUS&&&&&status = ObR ..&( 11:38)&&&我后面修改了,还是蓝。NTSTATUS MyNtOpenProcess(OUT PHANDLE ProcessHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN PCLIENT_ID ClientId )//我们自己的NtOpenProcess&& &{&&&&&&&NTSTATUS&&&&&NTSTATUS&&& PEPROCESS&&//接受通过ProcessHandle返回的进程&&&& &&&&&CHAR *pName=NULL;&&&&&&&&//接受进程的进程名&& &&&&&&&&&&&&&&&status = ObReferenceObjectByHandle(ProcessHandle,&&&&&&&&&FILE_READ_DATA,0,KernelMode,&process,NULL);&&&&//获取进程&& &&&&&&&&&&if(!NT_SUCCESS(status))&& &&&&&&& rt= (NTSTATUS)(NTSTATUS)pRealOpenProcess( ProcessHandle,DesiredAccess, ObjectAttributes, ClientId );&&&&&&&&&&&&&&pName = (CHAR*)PsGetProcessImageFileName(process); //获取进程名&& &&&&&if(IsProtect(pName)) //判断是否是我们要保护的进程,是则返回权限不足,否则调用原函数结束进程&& &&&&&{&&&&&&&&&&&ProcessHandle = NULL;&&&&&&&&&return STATUS_ACCESS_DENIED; &&&&&}&&&&&&&&&&&}&&
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 _nop 的帖子
:&&&&rt=(NTSTATUS)pRealOpenProcess( ProcessHandle,DesiredAccess, ObjectAttributes, ClientId ); G)G5eXXX&&&&&&&&&&& &d&B:&&&判断下NTSTATUS&&&&&status = ObR ..&( 11:38)&&&NTSTATUS MyNtOpenProcess(OUT PHANDLE ProcessHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN PCLIENT_ID ClientId )//我们自己的NtOpenProcess&& &{&&&&&&&NTSTATUS&&&&&NTSTATUS&&& PEPROCESS&&//接受通过ProcessHandle返回的进程&&&& &&&&&CHAR *pName=NULL;&&&&&&&&//接受进程的进程名&& &&&&&&&&&&&&&&&status = ObReferenceObjectByHandle(ProcessHandle,&&&&&&&&&FILE_READ_DATA,0,KernelMode,&process,NULL);&&&&//获取进程&& &&&&&&&&&&if(!NT_SUCCESS(status))&& &&&&&&& rt= (NTSTATUS)(NTSTATUS)pRealOpenProcess( ProcessHandle,DesiredAccess, ObjectAttributes, ClientId );&&&&&&&&&&&&&&pName = (CHAR*)PsGetProcessImageFileName(process); //获取进程名&& &&&&&if(IsProtect(pName)) //判断是否是我们要保护的进程,是则返回权限不足,否则调用原函数结束进程&& &&&&&{&&&&&&&&&&&ProcessHandle = NULL;&&&&&&&&&return STATUS_ACCESS_DENIED; &&&&&}&&&&&&&&&&&}&&
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 _nop 的帖子
:TO 1010111 &函数的作用你也搞不清楚&你大错特错了&你直接if(PsLookupProcessByProcessId(Client.ProcessId,Eprocess)==NULL)&PsGetProcessImageFileName(Eprocess)&.......&( 12:57)&&&没看懂你的意思,请说清楚点好吗
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 _nop 的帖子
:NTSTATUS MyOpenProcess(PHANDLE ProcessHandle ,DWORD d,PDWORD d1,PCLIENT_ID ClientId )&{&if(PsLookupProcessByProcessId(Client.ProcessId,Eprocess)==NULL)&{&if (strstr((char *)PsGetProcessImageFileName(Eprocess),&保护的进程.exe&)!=0)&.......&( 13:06)&&&: 'PsLookupProcessByProcessId' assuming extern returning int
UID:75319
在线时间1036小时
金钱192威望140贡献值10社区警告0诚信值120账号服务0热心值1
楼主,我在广海上有个动画教程,就是讲这个HOOK的,你可以看一下,看对你有用不.
/item.htm?id= 各种游戏保护,也可订做!
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 _nop 的帖子
:自己声明下啊&C语言&NTSTATUS&PsLookupProcessByProcessId(&&&&&&&&&&&&&&&&&&&&&&&&&&& __in HANDLE ProcessId,&.......&( 13:59)&&&C语白的还要申明?
UID:26749
在线时间43小时
金钱7威望68贡献值0社区警告0诚信值0账号服务0热心值0
回 _nop 的帖子
:忘了说 上面&PEPROCESS Eprocess&if(PsLookupProcessByProcessId(Client.ProcessId,&Eprocess)==NULL) &( 14:00)&&&我请问你说的神马东西?
访问内容超出本站范围,不能确定是否安全
Powered by & Copyright Time now is:12-14 03:23 &
版权所有 Gzip enabled
Total 0.046874(s) query 1, Time now is:12-14 03:23, Gzip enabled:2013年5月 C++ Builder大版内专家分月排行榜第三2012年7月 C++ Builder大版内专家分月排行榜第三2012年5月 C++ Builder大版内专家分月排行榜第三2011年5月 C++ Builder大版内专家分月排行榜第三2011年3月 C++ Builder大版内专家分月排行榜第三2010年12月 C++ Builder大版内专家分月排行榜第三2010年10月 C++ Builder大版内专家分月排行榜第三2010年1月 C++ Builder大版内专家分月排行榜第三2009年9月 C++ Builder大版内专家分月排行榜第三2009年7月 C++ Builder大版内专家分月排行榜第三2009年6月 C++ Builder大版内专家分月排行榜第三2009年5月 C++ Builder大版内专家分月排行榜第三2006年3月 C++ Builder大版内专家分月排行榜第三2005年9月 C++ Builder大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

 

随机推荐