vb初学者问题(高手帮忙解决追加50分)

作者&投稿:景甄 (若有异议请与网页底部的电邮联系)
请高手进来帮忙,关于SQL和网络通信链接失败的问题,追加50分。~

VB访问SQL Server数据库技术全揭密

摘 要:

本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。

一、引言

SQL Server是微软推出的中小型网络数据库系统,是目前最常用的数据库系统之一。随着SQL Server网络数据库应用程序日益增多,这种Web数据库应用系统的正常运行一般依赖于已存在的用户数据库。创建维护数据库的工作可用SQL Server提供的SQL Enterprise Manager工具来进行,如能提供一种定制的数据库管理工具,通过管理应用程序来管理数据库及其设备,对用户来说无疑是最理想的。

Visual Basic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。而且Microsoft为其提供了与SQL Server通信的API函数集及工具集,因此它越来越多地用作大型公司数据和客户机—服务器应用程序的前端,与后端的Microsoft SQL Server相结合,VB能够提供一个高性能的客户机—服务器方案。

二、VB访问SQL Server数据的常用方法

使用Visual Basic作为前端开发语言,与SQL Server接口有几种常用的方法,即:

①数据访问对象/Jet

②为ODBC API编程

③使用SQL Server的Visual Basic库(VBSQL)为DB库的API编程

④RDO 远程数据对象(RemoteData Objects)

⑤ADO 数据对象(Active Data Objects)

1、数据访问对象/Jet

VB支持Data Access Objects(DAOs)的子集。DAO的方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它的确有许多优点。DAO/Jet是为了实现从VB访问Access数据库而开发的程序接口对象。使用DAOs访问SQL Server的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQL Server提交SQL语句且返回结果。下面是一个用DAOs访问SQL Server的VB实例。

注释:Form Declarations

Dim mydb As Database

Dim mydynaset As Dynaset オ

Private Sub Form_Load()

Set mydb = OpenDatabase("", False, False, "ODBC; DSN=Myserver; WSID=LCL; DATABASE = sales")

Set mydynaset = mydb CreateDynaset("Select*from Customers") オ

End Sub ァ

上述例子是以非独占、非只读方式打开sales数据库,并检索Customers表中的所有字段。OpenDatabase函数的最后一个参数是ODBC连接字符串参数,它指明了Microsoft Access连接到SQL Server所需要知道的一些内容。其中“DSN”为数据源名,“WSID”为工作站名,“DATABASE”为所要访问的数据库名。

2、利用ODBC API编程

ODBC(Open Database Connectivity)的思想是访问异种数据库的一种可移植的方式。与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接中。应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器(SQLSRVR.DLL)把它们送到服务器中。

下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句句柄。

Global giHEnv As Long

Global giHDB As Long

Global giHStmt As Long

Dim myResult As integer

Dim myConnection As Srting

Dim myBuff As String*256

Dim myBufflen As Integer

If SQLAllocEnv(giHEnv)SQL_SUCCESS Then

MsgBox"Allocation couldn注释:t happen!"

End If

If SQLAllocConnect(giHEnv,giHDB)SQL_SUCCESS Then

MsgBox "SQL Server couldn注释:t connect!"

End If

myConnection="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABASE=sales"

myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection),myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQU IE D)

myResult=SQLAllocStmt(giHDS,giHStmt)

myResult=SQLFreeStmt(giHStmt,SQL_COLSE)

rsSQL="Select * from Customers Where City = "Hunan""

myResult = SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))

3、使用VBSQL对DB库API编程

DB库是SQL Server的本地API,SQL Server的Visual Basic库(VBSQL)为Visual Basic程序员提供API。从一定意义上说,VBSQL是连接Visual Basic程序到SQL Server的性能最好最直接的方式。VBSQL包含以下三个文件:

VBSQL.VBX: 包含库函数,具有访问重要的消息和处理错误的能力

VBSQL.BI:包括所有的常量和变量说明

VBSQL.HLP:Windows帮助文件,使用VBSQL的指南



使用VBSQL时,必须将VBSQL.BI加入到Visual Basic工程文件中,并确保VB程序运行时有VBSQL.VBX文件。

一般的DB库API编程的过程是这样的:先通过调用SqlInit对DB库进行初始化,再调用SqlConnection打开一个连接,然后就可做一些工作。下面的代码是一个初始化DB库并登录到服务器的通用例程。
Private Sub InitializeApplication()
DBLIB_VERSION=SqlInit()

If DBLIB_VERSION=""Then

MsgBox"Could not initialize DBLIB!Exit application.", MB_ICONEXCLAMATION

End If

End Sub

Private Function LoginToServer() As integer

loginToServer=SUCCEED

Status%=SqlSetloginTime%(loginTimeOut)

If giSqlConn0 Then

SqlClose(giSqlConn) 注释:关闭已打开的连接

giSqlConn=SqlOpenConnection(gsServerName, gsLoginID, gsPassword, ProgramName, ProgramName)

If giSqlConn0 Then

liresuit=SqlUse(giSqlConn,"Sales")

Else

LogintoServer=FAIL

End If

End Function

4、RDO 远程数据对象(RemoteData Objects)

要讨论RDO,就必然要谈到DAO。RDO是从DAO派生出来的,但两者很大的不同在于其数据库模式。DAO是针对[记录(Records)]和[字段( Fields)],而RDO是作为[行(Rows)]和[列(Columns)]来处理。也就是说DAO 是ISAM模式,RDO是关系模式。此外DAO是访问Access的Jet引擎(Jet是ISAM)的接口,而RDO则是访问ODBC的接口。

可见,RDO是综合了DAO/Jet、VBSQL/DBLib以及ODBC的优点的对象(Object)。需要强调的是,RDO是包裹着ODBC API的一层薄薄的外壳, 被设计成在后台(服务器端)有数据库存在的前提下运行,同时也是针对SQL Server和Oracle而特别设计的。

RDO的优势在于它完全被集成在VB之中。此外,直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等,也是RDO的长处。

在RDO的对象和集合中,有很多对数据库的状态和设定进行操作的属性(Property),以及对数据库进行操作的方法(Method)。利用这些,从RDO2.0起就可以开发事件驱动的数据库应用程序。

RDO对象与VB中其他对象的概念相同。与VB用的ActiveX控件(以往称为Custom Control或OCX、VBX)相似的是,RDO也带有属性和方法;但同Spread、InputMan等普遍应用的ActiveX控件不同的是,RDO没有自己的用户界面,因而可以和VB标准的Timer控件归为同一类。当然也可以将RDO看作调用ODBC API函数,进而对后台数据库操作加以控制的对象。在RDO的属性和方法中,包含了对单个的ODBC API函数以及一连串API函数的调用。

①rdoEngine对象

最初调用RDO对象以及RDC(远程数据控件)时,自动生成rdoEngine对象的附带事件(incident)。rdoEngine用于对RDO全局属性的参数、选项进行设置,是在RDO的阶层结构内处于最上层的对象,包含了所有的其他对象。

rdoEngine对象与DAO/Jet不同,虽然被多个应用程序共享,但体现rdoEngine对象的设定值的属性却并不共用,而是在各自的应用程序的程序界面中对其分别加以设定。这些设定值对其他使用RDO以及RDC的应用程序没有任何影响。rdoEngine不是集合的要素,而是重新定义的对象,rdoEngine对象不能被追加作成对象属性的初值。

②rdoEnvironment对象

RDO对象在自动创建rdoEngine对象时,将rdoEnviroment对象的初始值生成并保存为rdoEnviroments(0)。一般情况下,应用程序中不必追加rdoEnvironment对象,大多只需对已有的rdoEnviroments(0)进行操作就可以了。只有在支持一个以上事务(Transaction),需要将用户名和口令信息分别处理的情况下,利用rdoCreateEnvironment方法将特定的用户名和口令值做成新的rdoEnvironment对象。在这个方法中可以指定固有名、用户名和口令,如果所指定的值与rdoEnvironments集合的已经存在的成员名称相同,会产生错误。新建的rdoEnvironment对象自动追加在rdoEnvironments集合的最后。调rdoCreateEnvironment方法时,其name参数可以是长度为0的文字列,这时新的rdoEnvironment对象将不会被追加在rdoEnvironments集合之中。

③rdoConnection对象

rdoConnection对象用于同SQL Server的连接管理。

下面是与SQL Server连接的例子。

用OpenConnection方法的一个实例。

设定的DSN为MyDSN:

Dim Cn As rdoConnection

Dim En As rdoEnvironment

Dim Conn As String

Conn = "DSN = MyDSN; UID = Jacob;" & "PWD = 123456; DATA BASE = MyDb;"

Set Cn= En.OpenConnection("", rdDriverPrompt, False, Co nn)

Set Cn= En.OpenConnection(Prompt:= rdDriverPrompt, Rea dOnly:= False,Connect:= Cnn)



用EstablishConnection方法的一个实例。

这里以独立的rdoConnection对象为例说明与SQL Server的连接。



Public WithEvents Eng As rdoEngine

Public WithEvents Cn As rdoConnection

Private Sub Form_Load()

Set Eng = New rdoEngine

Set Cn = New rdoConnection

With Cn

.Connect = "UID = ; PWD = ;" & "DATABASE = pubs; DSN = biblio"

.LoginTimeout = 5

.EstablishConnection rdoDriverNoPromt, True, rdAsyncEna ble

End With

End Sub

在这个例子中,Form_Load函数对rdoEngine和rdoConnection对象进行初始化。这里有一点需要注意,rdoConnection对象是处于独立的状态之下,即使是处于未连接状态也可以设置属性的值。接下来是rdoConnect对象的事件处理程序。从RDO 2.0起可以实现异步方式(rdAsyn cEnable),EstablishConnection就设定为该值。在异步状态下,不必等待与数据库的连接,程序可以迅速从Form_Load 函数中退出。 然后是BeforeConnect事件,该处理在与数据库的连接开始以前被激发,此时不能进行有关终止连接的操作:

Private Sub Cn_BeforeConnect(ConnetString As String, Pro mpt As Variant)

MsgBox "正在连接" & ConnectString, vbOKOnly, "连接前"

End Sub


连接完成之后的事件处理:
Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)

Dim M As String

If ErrorOccurred Then

For Each er In rdoErrors

M = M & er & vbCrLf & M

Next

MsgBox "连接失败" & vbCrLf & M

Else

MsgBox "连接成功"

注释:这是确认连接状态的测试代码

Cn.Excute "use pubs"

End Sub

RDO连接处理结束后,在该事件中确认连接成功与否。连接成功的情况下ErrorOccurred返回False,失败时为True,由此可以对rdoErrors集合进行检测:

Private Sub Eng_InfoMessage()

For Each er In rdoErrors

Debug.Print er

Next

RdoErrors.Clear

End Sub

不能与SQL Server连接的原因多种多样,有可能是由于对数据库的访问权限、网络连接问题、数据库表的信息错误、SQL Server同时连接的许可数、资源不足等等,具体情况需要与网络管理员商量。 断开连接的操作非常简单,但又很重要,因为RDO不提供自动断开的功能。

Cn.Close

Set Cn = Nothing 注释:释放对象所占的内存资源

En.Close

Set En = Nothing 注释:释放对象所占的内存资源

VB是对象语言,Form、ActiveX控件也都是对象。使用对象后必须养成将对象设为Nothing把它从内存中释放的编程习惯。这样可以预防很多不可预测错误,往往程序中发生原因不明的错误时,其原因就在于此。

5、ADO 数据对象(Active Data Objects)

ADO是基于全新的OLE DB技术,OLE DB可对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取。随着ActiveX控件的升级(Windows 98的ActiveX 5.0),RDO将被以ActiveX技术为基础的ADO接口所替代。下面将介绍基于ActiveX技术的ADO访问SQL Server 6.5数据库的技术和方法。基于浏览器的ADO接口常用函数如下:

(1)取当前的工作数据库

由于管理任务一般都必须在Master库中完成,因此在执行管理任务之前,最好保存当前工作库,以便完成任务之后再切换回原来的任务。

Public Function SQLGetCurrentDatabaseName(Cn As ADODB.Connection) As String

Dim sSQL As String

Dim RS As New ADODB.Recordset

On Error GoTo errSQLGetCurrentDatabaseName

sSQL="select CurrentDB=DB_NAME ( )"

RS.Open sSQL, Cn

SQLGetCurrentDatabaseName=Trim $ (RS! CurrentDB)

RS.Close

Exit Function

errSQLGetCurrentDatabaseName:

SQLGetCurrentDatabaseName=" "

End Function

(2)取SQL Server安装目录下的DATA子目录路径

取SQL Server的设备文件缺省目录,返回如D:MSSQL DATA。

Public Function SQLGetDataPath(Cn As ADODB.Connection) As String

Dim sSQL As String

Dim RS As New ADODB.Recordset

Dim sFullPath As String

On Error GoTo errSQLGetDataPath

sSQL="select phyname from master..sysdevices where name=注释:master注释: "

RS.Open sSQL, Cn

sFullPath = RS! phyname

RS.Close

SQLGetDataPath=Left $ (sFullPath, Len(sFullPath) -10) 注释:MASTER.DAT的大小

Exit Function

errSQLGetDataPath:

SQLGetDataPath=" "

End Function

(3)创建一个新数据库

Public Function SQLCreateDatabase65 (Cn As ADODB.Connection,sDBName As String, sDataDeviceName As String, nDataSize As Integer, Optional sLogDeviceName, Optional nLogSize) As Boolean

Dim sSQL As String

On Error GoTo errSQLCreateDatabase65

Dim sDB As String

sDB =SQLGetCurrentDatabaseName(Cn)

sSQL = "USE master"

Cn.Execute sSQL

sSQL ="CREATE DATABASE" & sDBName

sSQL = sSQL &" ON " & sDataDeviceName & "=" & nDataSize

If Not IsMissing(sLogDeviceName) And Not IsMissing(nLogSize) Then

sSQL = sSQL & "LOG ON" & sLogDeviceName & "="& nLogSize

End If

Cn.Execute sSQL

sSQL = "USE" & sDB

Cn.Execute sSQL

SQLCreateDatabase65 = True

Exit Function

errSQLCreateDatabase65:

On Error Resume Next

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLCreateDatabase65 = False

End Function

(4)判断一个数据库是否存在


Public Function SQLExistDatabase(Cn As ADODB.Connection, sDBName As String) As Boolean
Dim sSQL As String

Dim RS As New ADODB.Recordset

Dim bTmp As Boolean

on Error GoTo errSQLExistDatabase

sSQL = "select CntDB = count ( * ) "

sSQL = sSQL & "From master.dbo.sysdatabases"

sSQL = sSQL & "Where name = 注释: "& sDBName & " 注释: "

RS.Open sSQL, Cn

If RS! CntDB = 0 Then bTmp = False Else bTmp = True

RS.Close

SQLExistDatabase = bTmp

Exit Function

errSQLExistDatabase:

SQLExistDatabase = False

Exit Function

End Function

(5)删除一个数据库

Public Function SQLDropDatabase (Cn As ADODB.Connection, sDBName As String) As Boolean

Dim sSQL As String

On Error GoTo errSQLDropDatabase

If Not SQLExistDatabase(Cn, sDBName) Then

SQLDropDatabase = True

Exit Function

End If

Dim sDB As String

sDB = SQLGetCurrentDatabaseName(Cn)

sSQL = "Use master"

Cn.Execute sSQL

sSQL = "DROP DATABASE " & sDBName

Cn.Execute sSQL

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLDropDatabase = True

Exit Function

errSQLDropDatabase:

On Error Resume Next

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLDropDatabase = False

End Function

三、性能比较及应用说明

用VB开发基于SQL Server的数据库系统,以上几种访问SQL Server的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它是从Visual Basic到SQL Server最慢的连接方式。ODBC API和VBSQL方法从本质上讲是基于程序的。ODBC API方法通用性好,允许最强的互操作性,编程简单,但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQL Server前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处理、游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。RDO是位于ODBC API之上的一个对象模型层,它依赖ODBC API、ODBC驱动程序以及后端数据库引擎来实现,用RDO所需的程序短小(约250 KB)、快速。RDO具备基本的ODBC处理方法,可直接执行大多数ODBC API函数,RDO包含在VB 4.0/VB 5.0企业版中,由MSRDO32.DLL动态连接库来实现。RDO是综合了DAO/Jet、VBSQL/DBLib和ODBC的优点的对象模型,包含ODBC API应用层,设计为在后台(服务器端)有数据库存在的前提下运行,是针对SQL Server和Oracle而特别设计的。RDO的优势在于它完全被集成在VB之中,可直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等。但微软已宣布今后不再对VBSQL/DBLib进行升级,而ODBC API函数一般的编程方式也不为人们所喜爱,RDO的应用将逐渐减少。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。

四、VisualBasic访问数据库的前景

近来随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战。为此Microsoft提出一种新的数据库访问策略,即“统一数据访问”(UniversalDataAccess)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。

“统一数据访问”的基础是Microsoft的数据访问组件。这些组件包括ActiveXDataObjects(ADO)、RemoteDataService(RDS,也称“高级数据连接器或”ADC)、OLEDB和ODBC。

问题一:已经用select语句得到的记录集,不能再次用sql语句过滤,而是必须用VB语句一条记录一条记录的查找。
问题二:不要把Vb语句和SQL语句搞混,Left函数是VB的,SQL不认识。
问题三:SQL服务器本身就是用于支持多人频繁访问,很多网络游戏用的就是这种数据库,难道你的程序访问量比他们还大?就算是这样,也可以通过服务器负载均衡,分布式访问等技术解决,这已经和你的程序无关了。
问题四:鉴于第三点,你就别想着什么记录集过滤了,该用select ... from .. where...的时候就用吧

呵呵,应该是内存出错而已!!!!!!!
一、应用程序没有检查内存分配失败

程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。

内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。

若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。

内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

二、应用程序由于自身BUG引用了不正常的内存指针

在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!

像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。

如果系统经常有所提到的错误提示,下面的建议可能会有帮助:

1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。

3.试用新版本的应用程序。

今天我们就来分析一下,为什么会现出内存报警,出现内存存报警后,如何解决此类问题?

内存报警的根本原因有:

1).内存损坏。

2).主板的内存插槽损坏。

3).主板的内存供电或相关电路有问题。

4).内存与内存插槽接触不良。

上述的1,2,3种故障都属于实实在在的硬件故障,我们可以通过替换排除法,查出故障元件,再对坏件进行维修或更换就能解决。对于第4种情况,我们遇到的最多,什么元件也没有损坏,就是二者接触不良造成的。

内存与主板接触不良的原因有:

1).内存插槽变形

这种故障不是很常见,一般见于主板有形变,内存插槽有损坏,裂缝等现象,当我们把内存插入内存插槽时时就会出现部分接触不良的情况,当主机加电开机自检时就不能通过,就会出现连续的短“嘀”声,也就是大家常说的“内存报警”。对于主板形变,内存插槽变形的现象我们可以在内存插好后通过使用尼龙扎带紧固,再辅以打胶的方法来解决此类问题。

不过,在拔插内存的过程中我们一定要注意内存的方向,虽然内存条和内存插槽有防呆设计,但是还有有许多菜鸟仍然把内存插反,造成内存条和内存插槽个别引脚烧熔的情况,这时只能放弃使用损坏的内存插槽。对于引脚烧熔的内存条,我们可以仔细检查一下,如果只是77和85接地端烧熔,也或许是其他内存条的接地端,即使把金手指烧得脱落了,这样的内存条因是接地端在反插时把电源正与地短路了,才造成打火烧毁内存条的金手指和内存插槽的引脚,而内存芯片却没有受到任何损伤,所以这样的内存条我们只要把其插在正常的内存插槽上就可以正常使用。

有时我们还要注意内存插中是否有其他异物,因为如果有其他异物在内存插槽里,当插入内存时内存就不能插到底,内存无法安装到位,当然就会出现开机报警现象。当我们多次拔插内存仍不能解决问题时,最好仔细检查一下内存插槽是否变形,是否有引脚变形或损坏,脱落,插槽里是否有异物等情况,这样做对我们排除故障很有帮助。
2).内存金手指氧化

这种情况最容易出现,一般见于使用半年或一年以上的机器。当天气潮湿或天气温度变化较大时,就会出现昨天机器工作还好好的,可第二天早晨开机时即发现无法正常开机,显示器黑屏,只听得机内“嘀嘀“直响。

这种情况如果只是偶尔一次也不值得大惊小怪,只要拆开机箱把内存条重插一下就可以了。不过如果这种故障每个月都发生一次或者一个星期或半个月就要出现一次,那就要考虑是不属于内存条与主板兼容性不好的问题了,也就是下面要说的第3种类型的问题。

预防的方法:

(1).采用第1种问题中所说的紧固方法解决;

(2).再就是安装和检修时,一定不能用手直接接触内存插槽的金手指,因为我们手上的汗液会粘附在内存条的金手指上,如果内存的金手指做工不良或根本没有进行镀金工艺处理,那么内存条在使用过程中就很容易出现金手指氧化的情况,时间长了就会导致内存条与内存插槽接触不良,最后开机内存报警。对于内存条氧化造成的开机报警,我们不能简单的重新拔插一下内存了事,必须小心的使用橡皮把内存条的金手指认真擦一遍,擦得发亮为止,再插回去就可以了。

(3).还有就是即使我们不经常使用电脑,也要每隔一个星期做到起码开机一次,让机器运行一两个小时,利用机器自身产生的热量把机器内部的潮气驱走,保持机器良好的运行状态。

http://qhqh.anyp.cn/


一道高中物理题,请高手教教初学者。
分析:要带电粒子能从AB边飞出,则它在磁场中做圆周运动时最大轨迹只能和CD边相切。这样能知道最大半径。又因为带电粒子在磁场中运动半径R=mv\/qB 所以在q.B,m一定的情况下,速度越大,半径也越大。解:因为粒子入射与AB边界夹角30度,设轨迹最大半径为R 则d=R+Rcos30 又R=mv\/qB 所以d=mv...

我是初学者,不知道问题出哪了,求高手解答。
一、第一个printf语句最后的分号应该使用英文的 二、a=1,b=1,c=1;这句的逗号应该使用分号 如果还有错误,请粘贴屏幕上的错误提示和显示的错误位置,否则请确保你这里贴的程序和机器上运行的完全相同。

我是篮球初学者~请高手教我打篮球有什么技巧!
练球和打球不要怕吃苦.因为篮球靠的是真本领.没有任何一样东西是你不付出就可以收获的.打球时不要怕自己打的不好.配合不好什么的不敢投不敢突.篮球最怕的就是畏首畏脚.有机会就投.有空挡就突.我相信没有一个自称是高手的人从开始打篮球就一直是高手.谁都有菜鸟的时候.打球要自信.要有自己的风格.最主要...

在一次函数里,b和k分别表示什么? (我是初学者,请高手们讲详细些,谢谢啦...
一次函数:y=kx+b的图象为直线。用图象可以这样来说明 k指的是斜率,即直线与x轴的夹角的正切值。当k>0时,y随x增大而增大,当k<0时,y随增大而减小。若从图象看,k>0时,从左到右向上斜,k<0时,从左到右向下斜 b为常数,该值为直线与y轴交点坐标值。在图象上,还可以知道,直线与x...

篮球初学者该如何成为高手
篮球初学者该如何成为高手  我来答 首页 在问 全部问题 娱乐休闲 游戏 旅游 教育培训 金融财经 医疗健康 科技 家电数码 政策法规 文化历史 时尚美容 情感心理 汽车 生活 职业 母婴 三农 互联网 生产制造 其他 日报 日报精选 日报广场 用户 认证用户 视频作者 日报...

关于初学者学习编程的(数学)应用问题
关于初学者学习编程的(数学)应用问题 在网上看过很多资料,也咨询过一些培训机构老师、网友们的答案,可是说了都是各不相同、有的说数学这个在计算机中、有些项目要用、有的说不需要在程序中数学只是需要你在做数学中的一... 在网上看过很多资料,也咨询过一些培训机构老师、网友们的答案,可是说了都是各不相同...

麻烦高手帮忙解决下,我是初学者~~
选A和B。最低租赁付款额是指在租赁期内,承租人应支付或可能被要求支付的款项(不包括或有租金和履约成本),加上由承租人或与其有关的第三方担保的资产余值。如果承租人有购买租赁资产选择权,所订立的购买价款预计将远低于行使选择权时租赁资产的公允价值,因而在租赁开始日就可以合理确定承租人将会...

...请物理高手们对每个选项详细解答,我是初学者,谢谢了!
A正确. F压=G+F推竖直=G+F推*sin30=20N+8N*0.5=24N B错误 此答案有迷惑性 虽然F摩擦=F压*μ=24N*0.5=12N 但在本题中 F推水平=F推*cos30=4√3N F推水平<F最大静摩擦(F最大静摩擦=F摩擦=F压*μ=24N*0.5=12N )所以物体所受的摩擦力=F推水平=4√3N C错误 因...

初学者学习linux运维的几个问题及老鸟建议
2、多动手,勤于实践。本人也经常遇到初学者问我有什么好的方法学好Linux。我基本上每次都类似回答他们:没有什么好办法,只有多动手,勤于实践。学习计算机有一个非常好的优势就是,你测试环境下或虚拟机上搞测试不需要太担心把机器搞坏,即使把系统搞坏了,大不了重装系统就是了。计算机方面的知识很多...

日语高手进吧 本人初学者 这些题目都不会
第9题我也不知道 第四张纸选4 是水耀日 题目的意思是晚会上的那个人在星期四的前一天给了田中六百日元。星期四是木耀日,前一天是星期三,那么就是水耀日。最后的填空题A是填引く 辞书を引く 就是查字典的意识,我看不太清太晚了。B的话我也不知道。(看不太清,好累)有问题可以追问 ...

石林彝族自治县15067002819: 求'VB'前辈高手们帮初学者解决个问题,急急急...
滑霞依芬: 第一个问题:在dim i!前面加一个randomize 第二个问题:你的理解是对的,在程序最前面加一个option base 1,可以解决这个问题

石林彝族自治县15067002819: 关于vb编程的问题 各位高手进来看看 帮俺解决个难题 可追加50分
滑霞依芬: Private Sub CommandButton1_Click() Dim arrEvenNum(60), arrImparNum(60) As Integer '保存偶数的数组 Dim num, evenIndex, imparIndex, tmp, i As Integer '保存奇数的数组 evenIndex = 0 imparIndex = 0 Randomize For i = 0 To 60 num = CInt(...

石林彝族自治县15067002819: 初学者的vb小问题,请各位高手帮帮忙 -
滑霞依芬: 首先,楼上的答案肯定不对 你自习看看,v1在等式左右都有,那样肯定球不出来的 说实话我还没想到很正确的方法 我数学学得不好,你看看那个方程式能不能整理成v1=后面的式子里没有v1 然后再求就很简单 但是我估计这个不可能那么简单的...

石林彝族自治县15067002819: 我是一个VB 初学者,哪位前辈高手能指点一下,学习经验啊? -
滑霞依芬: 我的心得是:1、从简单做起,不要太快,否则容易产生厌倦反而不利;2、多做例题,反复练习,一定要上机实践哦;3、要是有老师当面辅导就太好了,否则不要啥都要刨根问底,不懂的先越过去,后面还能碰到解释.4、刚学习时,不管是看...

石林彝族自治县15067002819: 跪求vb高手帮忙做几题vb选择题、急!!!会追加分的!谢谢! -
滑霞依芬: 8. C. Text1.ReafOnly=True;Text没有这个属性的9. A.(300,-150) 右边=-200+500=300,下边=250+-400=-15010. B. Alignment属性设置为111. A.DblClick,按钮不响应双击事件12. 改成Private Sub Command1_Click()才是有效的; List1.ListCount为项目数,但引用时是从0开始的,也就是List1.List(0)=第1项 B.把字符串“vb”添加到列表框最后

石林彝族自治县15067002819: 急求VB高手帮我做一下这个程序填空题,很急!!!如果做得好我追加悬赏! -
滑霞依芬: Private Sub Form_Click()Dim ch$, n1%, n2%, n3%n1 = 0n2 = 0n3 = 0ch = InputBox("请输入一个字符"SPACE*******...

石林彝族自治县15067002819: VB 简单问题 解决追加 在线等 -
滑霞依芬: 我太久不编程了,所以具体语句就不故说了.告诉你思路吧,在要输出前,用一个变量得到原有字符串值,然后把新增加的字符串与原有字符串连接,统一进行输出保存工作.

石林彝族自治县15067002819: vb初学者的小问题
滑霞依芬: 如果没有明确指示出属性,VB会自动使用其默认属性来操作 如 Text1.text=""和Text1=""是一样的,因为TextBox的默认属性为Text 而FORM1的默认属性为Caption 这个在类模块的向导里面也可以看到,里面可以指示一个属性为默认使用的属性

石林彝族自治县15067002819: 急求VB问题! -- 高手帮忙 -
滑霞依芬: Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, B...

石林彝族自治县15067002819: vb 请高手帮帮忙(初学者) -
滑霞依芬: For a = 1 To 28 For s = a + 1 To 29 For d = s + 1 To 30 For f = d + 1 To 31 For g = f + 1 To 32 For h = g + 1 To 33 n(i) = Str(a) + Str(s) + Str(d) + Str(f) + Str(g) + Str(h) i = i + 1 Next nextnextnext....For i = 1 To 1107568 List1.AddItem n(i) Next

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网