精华内容
下载资源
问答
  • 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库。缺省状态下,mysql的用户没有远程访问的权限。 下面介绍两种方法,解决这一问题。 1、改表法 可能是你的帐号不允许...
  • 因为数据库正在使用,所以无法获得对数据库的独占访问权。 解决方案: 解决方案1. 如果你使用管理工具还原数据库并且在SQL Server Management Studio 2016或以上版本的话,可以在还原的时候勾选"关闭到目标数据库的...

    【阅读文章申明】
    作者只是想把自己实践中的经验分享给大家,如果文章里面有在大神面前显的很低级的知识点
    那么大神你可以不看,请不要发一些“浪费流量”“辣鸡”之类嘲讽的话,每一篇文章都是作者自己
    截图,编辑,排版制作而且。我相信CSDN的所有UP都和我一样。人都是在不断学习不断进步。
    如果文章你觉得辣鸡,请你绕道别装逼,大家已经过了装逼的年龄了。






    问题:在这里插入图片描述提示错误信息:
    因为数据库正在使用,所以无法获得对数据库的独占访问权。

    解决方案:
    解决方案1.
    如果你使用管理工具还原数据库并且在SQL Server Management Studio 2016或以上版本的话,可以在还原的时候勾选"关闭到目标数据库的现有链接"在这里插入图片描述
    解决方案2.
    SQL SERVER 2016或以下的版本的
    在需要还原的数据库上右击,在右键菜单命令上选择**“属性”- >“选项”- >“状态”- >“限制访问”- >“Single”**
    单用户模式,直接还原,完成后把访值改回来220191013021121.png

    展开全文
  • NULL 博文链接:https://ynshun.iteye.com/blog/1917218
  • 一.Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权) 本次测试使用数据库实例SqlServer2008r2版 错误详细: 标题: Microsoft SQL Server Management Studio ------------------------------ 还原...

    一.Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)

    本次测试使用数据库实例SqlServer2008r2版

    错误详细:

    标题: Microsoft SQL Server Management Studio
    ------------------------------
    还原数据库“Mvc_HNHZ”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks)
    ------------------------------
    其他信息:
    System.Data.SqlClient.SqlError: 因为数据库正在使用,所以无法获得对数据库的独占访问权。 (Microsoft.SqlServer.SmoExtended)



    原因分析:

    在SqlServer2008r2中在还原数据库时,在执行备份操作的时候,如果有正在访问的用户或者没有关闭的数据库链接,则还原失败。


    二、解决方案

    解决方案1.

    如果你使用管理工具还原数据库并且在Microsoft SQL Server Management Studio 2016或以上版本的话,可以在还原的时候勾选"关闭到目标数据库的现有链接"



    解决方案2:

    如果你的SqlServer Management Studio的版本比较低,可以设置数据库为单用户模式,执行完还原操作后,恢复为多用户模式

    设置方式:选中要还原的数据库-->属性-->选项-->限制访问
    该值从MULTI_USER修改为SINGLE_USER,此时该数据库就会显示为单用户模式
    这是GUI的模式,语句的办法比较简单

    ---设置数据库为单用户模式
    USE MASTER
    GO
    ALTER DATABASE eol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE;   
    GO
    

    ---设置数据库为多用户模式
    USE MASTER
    GO
    ALTER DATABASE eol_tcgroup SET MULTI_USER WITH ROLLBACK IMMEDIATE;   
    GO

    解决方案3:

    完全使用T-Sql的方式,执行备份数据库操作

    use master
    go
    ---声明变量
    declare @dbName nvarchar(max)='Mvc_HNHZ';
    declare @dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak';
    --1.1修改为单用模式
     exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');
    --1.2结束链接进程
    	DECLARE @kid varchar(max)  
    	SET @kid=''  
    	SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10))  FROM master..sysprocesses  
    	WHERE dbid=DB_ID(@dbName)  ;
    	EXEC(@kid) ;
    --2.执行还原语句
       restore database @dbName from  disk=@dbFullName
       with replace  --覆盖现有的数据库
    --3.重置数据库为多用户模式
     exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');

    更多:

    SqlServer T-Sql实现数据库完整备份和还原

    SqlServer消息 6107,级别 14 只能终止用户进程。


    展开全文
  • ADO数据库访问技术

    千次阅读 2019-04-08 21:14:50
    一、ADO(active data object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建...

    https://blog.csdn.net/lishan9133/article/details/7055595

    一、ADO(active data object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。

        万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。让我们来看看ADO数据库开发的基本流程吧!它的基本步骤如下:

    (1)初始化COM库,引入ADO库定义文件

    (2)用Connection对象连接数据库

    (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。

    (4)使用完毕后关闭连接释放对象。

    二、ADO的三个核心对象

       Connection对象:它表示到数据库的连接,管理应用程序和数据库之间的通信。Command和Recordset对象都有一个ActiveConnection属性,该属性用来引用Connection对象。

       Command对象:被用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。

       Recordset对象:被用来获取数据。Recordset对象存放查询的结果,这些结果由数据的行(成为记录)和列(称为字段)组成。每一列都存放在Recordset的Fields集合中的一个Fields对象中。

          

    三、我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库。

            首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:

    #import "c:\program files\common files\system\ado\msado15.dll" rename ("EOF", "adoEOF")  (在一行上啊)      

    using namespace ADODB; 

    其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装方法。rename ("EOF", "adoEOF")说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。
        其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现关闭初始化的COM。在MFC中还可以采用另一种方法来实现初始化COM,这种方法只需要一条语句便可以自动为我们实现初始化COM和结束时关闭COM的操作,语句如下所示: AfxOleInit();
        接着,就可以直接使用ADO的操作了。我们经常使用的只是前面用#import语句引用类型库时,生成的包装类.tlh中声明的智能指针中的三个,它们分别是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分别对它们的使用方法进行介绍:

    1、_ConnectionPtr智能指针,通常用于打开、关闭一个库连接或用它的Execute方法来执行SQL命令语句(用法和_CommandPtr中的Execute方法类似)。
    ——打开一个库连接。先创建一个实例指针,再用Open打开一个库连接,它将返回一个IUnknown的自动化接口指针。代码如下所示:

    _ConnectionPtr	m_pConnection;
    // 初始化COM,创建ADO连接等操作
    AfxOleInit();
    m_pConnection.CreateInstance(__uuidof(Connection));
    
    // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
    // 因为它有时会经常出现一些意想不到的错误。jingzhou xu
    try                 
    {	
    	// 打开本地Access库Demo.mdb
    	m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
    
            //通过JET数据库引擎对ACCESS2000数据库的连接:
    }
    catch(_com_error e)
    {
    	AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");
    	return FALSE;
    }      
     

    在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的,下面是该方法的原型:

    HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options );

    上述函数中参数ConnectionString为连接字串;参数UserID是用户名;参数Password是登陆密码;参数Options是连接选项,用于指定Connection对象对数据的更新许可权,一般情况下Options可以是如下几个常量:

    adModeUnknown:缺省。当前的许可权未设置

    adModeRead:只读

    adModeWrite:只写

    adModeReadWrite:可以读写

    adModeShareDenyRead:阻止其它Connection对象以读权限打开连接

    adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接

    adModeShareExclusive:阻止其它Connection对象以读写权限打开连接

    adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接

    Connection对象除Open()方法外还有许多方法,我们先介绍Connection对象中两个有用的属性ConnectionTimeOut与State。ConnectionTimeOut用来设置连接的超时时间,需要在Open之前调用,例如:

    m_pConnection->ConnectionTimeout = 5;///设置超时时间为5秒 m_pConnection->Open("Data Source=adotest;","","",adModeUnknown);

    State属性指明当前Connection对象的状态,0表示关闭,1表示已经打开,我们可以通过读取这个属性来作相应的处理,例如

     

    ——关闭一个库连接。如果连接状态有效,则用Close方法关闭它并赋于它空值。代码如下所示:

    if(m_pConnection->State)
            m_pConnection->Close();
    m_pConnection= NULL;      
     

     

    2、_RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作。
    ——打开数据表。打开库内表名为DemoTable的数据表,代码如下:

    _RecordsetPtr	m_pRecordset;
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    
    // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
    // 因为它有时会经常出现一些意想不到的错误。jingzhou xu
    try
    {
    	m_pRecordset->Open("SELECT * FROM DemoTable",                // 查询DemoTable表中所有字段
    						theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
    						adOpenDynamic,
    						adLockOptimistic,
    						adCmdText);
    }
    catch(_com_error *e)
    {
    	AfxMessageBox(e->ErrorMessage());
    }      
     

    Open()方法的原型如下:

    HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options )

    上述函数中参数Source是数据查询字符串;参数ActiveConnection是已经建立好的连接(我们需要用Connection对象指针来构造一个_variant_t对象);参数CursorType光标类型,它可以是以下值之一;请看这个枚举结构:

    enum CursorTypeEnum { adOpenUnspecified = -1,///不作特别指定 adOpenForwardOnly = 0,///前滚静态光标。这种光标只能向前浏览记录集,比如用MoveNext向前滚动,这种方式可以提高浏览速度。但诸如BookMark, RecordCount,AbsolutePosition,AbsolutePage都不能使用 adOpenKeyset = 1,///采用这种光标的记录集看不到其它用户的新增、删除操作,但对于更新原有记录的操作对你是可见的。 adOpenDynamic = 2,///动态光标。所有数据库的操作都会立即在各用户记录集上反应出来。 adOpenStatic = 3///静态光标。它为你的记录集产生一个静态备份,但其它用户的新增、删除、更新操作对你的记录集来说是不可见的。 };

    参数LockType表示数据库的锁定类型,它可以是以下值之一,请看如下枚举结构:

    enum LockTypeEnum { adLockUnspecified = -1,///未指定 adLockReadOnly = 1,///只读记录集 adLockPessimistic = 2,悲观锁定方式。数据在更新时锁定其它所有动作,这是最安全的锁定机制 adLockOptimistic = 3,乐观锁定方式。只有在你调用Update方法时才锁定记录。在此之前仍然可以做数据的更新、插入、删除等动作 adLockBatchOptimistic = 4,乐观分批更新。编辑时记录不会锁定,更改、插入及删除是在批处理模式下完成。 };

    参数Options的含义请参考本文中对Connection对象的Execute()方法的介绍。

    ——读取表内数据。将表内数据全部读出并显示在列表框内,m_AccessList为列表框的成员变量名。如果没有遇到表结束标志adoEOF,则用GetCollect(字段名)或m_pRecordset->Fields->GetItem(字段名)->Value方法,来获取当前记录指针所指的字段值,然后再用MoveNext()方法移动到下一条记录位置。代码如下所示:

    _variant_t var;
    CString strName,strAge;
    	try
    	{
    		if(!m_pRecordset->BOF)
    			m_pRecordset->MoveFirst();
    		else
    		{
    			AfxMessageBox("表内数据为空");
    			return;
    		}
    
    		// 读入库中各字段并加入列表框中
    		while(!m_pRecordset->adoEOF)
    		{
    			var = m_pRecordset->GetCollect("Name");
    			if(var.vt != VT_NULL)
    				strName = (LPCSTR)_bstr_t(var);
    			var = m_pRecordset->GetCollect("Age");
    			if(var.vt != VT_NULL)
    				strAge = (LPCSTR)_bstr_t(var);
    
    			m_AccessList.AddString( strName + " --> "+strAge );
    
    			m_pRecordset->MoveNext();
    		}
    
    		// 默认列表指向第一项,同时移动记录指针并显示
    		m_AccessList.SetCurSel(0);
    	}
    	catch(_com_error *e)
    	{
    		AfxMessageBox(e->ErrorMessage());
    	}     

    ——插入记录。可以先用AddNew()方法新增一个空记录,再用PutCollect(字段名,值)输入每个字段的值,最后再Update()更新到库中数据既可。其中变量m_Name和m_Age分别为姓名及年龄编辑框的成员变量名。代码所下所示:

    try
    	{
    		// 写入各字段值
    		m_pRecordset->AddNew();
    		m_pRecordset->PutCollect("Name", _variant_t(m_Name));
    		m_pRecordset->PutCollect("Age", atol(m_Age));
    		m_pRecordset->Update();
    
    		AfxMessageBox("插入成功!");
    	}
    	catch(_com_error *e)
    	{
    		AfxMessageBox(e->ErrorMessage());
    	}      

    ——移动记录指针。移动记录指针可以通过MoveFirst()方法移动到第一条记录、MoveLast()方法移动到最后一条记录、MovePrevious()方法移动到当前记录的前一条记录、MoveNext()方法移动到当前记录的下一条记录。但我们有时经常需要随意移动记录指针到任意记录位置时,可以使用Move(记录号)方法来实现,注意: Move()方法是相对于当前记录来移动指针位置的,正值向后移动、负值向前移动,如:Move(3),当前记录是3时,它将从记录3开始往后再移动3条记录位置。代码如下所示:

    	try
    	{
    		int curSel = m_AccessList.GetCurSel();	
    		// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
    		m_pRecordset->MoveFirst();
    		m_pRecordset->Move(long(curSel));
    		
    	}
    	catch(_com_error *e)
    	{
    		AfxMessageBox(e->ErrorMessage());
    	}      

    ——修改记录中字段值。可以将记录指针移动到要修改记录的位置处,直接用PutCollect(字段名,值)将新值写入并Update()更新数据库既可。可以用上面方法移动记录指针,修改字段值代码如下所示:

    	try
    	{
    		// 假设对第二条记录进行修改
    		m_pRecordset->MoveFirst();
    		m_pRecordset->Move(1);        // 从0开始
    		m_pRecordset->PutCollect("Name", _variant_t(m_Name));
    		m_pRecordset->PutCollect("Age", atol(m_Age));
    		m_pRecordset->Update();
    	}
    	catch(_com_error *e)
    	{
    		AfxMessageBox(e->ErrorMessage());
    	}      

    ——删除记录。删除记录和上面修改记录的操作类似,先将记录指针移动到要修改记录的位置,直接用Delete()方法删除它并用Update()来更新数据库既可。代码如下所示:

    	try
    	{
    		// 假设删除第二条记录
    		m_pRecordset->MoveFirst();
    		m_pRecordset->Move(1);        // 从0开始
    		m_pRecordset->Delete(adAffectCurrent);  // 参数adAffectCurrent为删除当前记录
    		m_pRecordset->Update();
    	}
    	catch(_com_error *e)
    	{
    		AfxMessageBox(e->ErrorMessage());
    	}      

    ——关闭记录集。直接用Close方法关闭记录集并赋于其空值。代码如下所示:

    	m_pRecordset->Close();
    	m_pRecordset = NULL;      

    3、CommandPtr智能指针,可以使用_ConnectionPtr或_RecordsetPtr来执行任务,定义输出参数,执行存储过程或SQL语句。

    (补充::ADO Command 对象用于执行面向数据库的一次简单查询。此查询可执行诸如创建、添加、取回、删除或更新记录等动作。

    如果该查询用于取回数据,此数据将以一个 RecordSet 对象返回。这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作。

    Command 对象的主要特性是有能力使用存储查询和带有参数的存储过程。)

    ——执行SQL语句。先创建一个_CommandPtr实例指针,再将库连接和SQL语句做为参数,执行Execute()方法既可。代码如下所示:

    _CommandPtr		m_pCommand;
    m_pCommand.CreateInstance(__uuidof(Command));
    m_pCommand->ActiveConnection = m_pConnection;  // 将库连接赋于它
    m_pCommand->CommandText = "SELECT * FROM DemoTable";  // SQL语句
    m_pRecordset = m_pCommand->Execute(NULL, NULL,adCmdText); // 执行SQL语句,返回记录集      

    ——执行存储过程。执行存储过程的操作和上面执行SQL语句类似,不同点仅是CommandText参数中不再是SQL语句,而是存储过程的名字,如Demo。另一个不同点就是在Execute()中参数由adCmdText(执行SQL语句),改为adCmdStoredProc来执行存储过程。如果存储过程中存在输入、输出参数的话,需要使用到另一个智能指针_ParameterPtr来逐次设置要输入、输出的参数信息,并将其赋于_CommandPtr中Parameters参数来传递信息,有兴趣的读者可以自行查找相关书籍或MSDN。执行存储过程的代码如下所示:

    _CommandPtr		m_pCommand;
    m_pCommand.CreateInstance(__uuidof(Command));
      m_pCommand->ActiveConnection = m_pConnection;  // 将库连接赋于它
    m_pCommand->CommandText = "Demo";  
      m_pCommand->Execute(NULL,NULL, adCmdStoredProc);      

     

    四、SQL命令的执行可以采用多种形式,下面我们一一进行阐述。

    1、我们还可以利用Connection对象的Execute方法执行SQL命令

    Execute()方法的原型如下所示:

    _RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options )

    其中CommandText是命令字串,通常是SQL命令。参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一:adCmdText表明CommandText是文本命令;adCmdTable表明CommandText是一个表名;adCmdProc表明CommandText是一个存储过程; adCmdUnknown表明CommandText内容未知。Execute()函数执行完后返回一个指向记录集的指针
    下面我们给出具体代码并作说明:

    _variant_t RecordsAffected; ///执行SQL命令:CREATE TABLE创建表格users,users包含四个字段:整形ID,字符串username,整形old,日期型birthday m_pConnection->Execute("CREATE TABLE users(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText); ///往表格里面添加记录 m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday) VALUES (1, 'Washington',25,'1970/1/1')",&RecordsAffected,adCmdText); ///将所有记录old字段的值加一 m_pConnection->Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText); ///执行SQL统计命令得到包含记录条数的记录集 m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM users",&RecordsAffected,adCmdText); _variant_t vIndex = (long)0; _variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量 m_pRecordset->Close();///关闭记录集 CString message; message.Format("共有%d条记录",vCount.lVal); AfxMessageBox(message);///显示当前记录条数

     2、利用Command对象来执行SQL命令

    上面已经叙述过

    3、直接用Recordset对象进行查询取得记录集

    上面也叙述过了

    展开全文
  • 为了进一步提高数据库访问的安全性,在2006-5-28 v3后的受控端中用户区数据库管理 增加[设置允许远程访问数据库的IP] 功能 用户可以自己设置远程访问数据库的IP地址,网管可以在服务器上,使用“星外IP安全策略”...
  • 问题二描述:在SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权。(Microsoft.SqlServer.Smo)。出现此问题的原因是在还原数据库时,有...

    问题一描述:SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样

    问题二描述:在对SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权。(Microsoft.SqlServer.Smo)。出现此问题的原因是在还原数据库时,有其他用户正在使用数据库。还原数据库要求数据库工作在单用户模式。通常就是DBA在操作时,不允许其他用户连接数据库。

    问题一解决办法:
             右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Multiple -> 确定。

    问题二解决办法:
             方法一(最方便):右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Single-> 确定。然后还原。
             方法二(最直接):断开数据库连接
             方法三(最暴力):注销/重启数据库服务器
             方法四(最麻烦):写代码修改数据库相关属性,虽然麻烦,有的时候还是要用到,那就用到的时候再研究。

     

    还原或删除sql server 2008数据库时,经常烩出现:
    “因为数据库正在使用,所以无法获得对数据库的独占访问权”,终解决方案如下


    关键SQL语句:
    ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE


    用完之后再
    ALTER  database  [ datebase]  set   online  

    展开全文
  • 本人最近完成了一个封装数据库访问抽象层的项目。我们开发的数据库访问抽象层作为分布式集群基础平台的一个组件。可以支持不同数据库编程接口(OCI、mysql、ODBC、pgsql)等。本系列博客主要分享一下我在开发数据库...
  • 已通过验证,且包含具体的word操作文档和mdb文件。
  • ADO.NET 数据库访问技术 以SQL Server为例详解

    千次阅读 多人点赞 2020-04-21 22:04:29
    数据访问命名空间2. Connection数据连接对象2.1. Connection对象2.2. 数据库连接字符串2.3. 应用SQLConnection对象连接数据库3. Command命令执行对象3.1. Command对象3.2. 应用Command对象操作数据3.3. 应用Command...
  • H2数据库远程访问

    千次阅读 2018-05-31 16:24:37
    -- 使用监听器启动和停止数据库 --> <listener-class>me.gacl.web.listener.H2DBServerStartListener <!-- 使用H2控制台的Servlet H2控制台是一个独立的应用程序,包括它自己的Web服务器,但它可以作为一个...
  • SQL语句实现跨数据库访问

    千次阅读 2018-10-18 20:51:09
    SQL语句实现跨数据库访问 第一步: 启用Ad Hoc Distributed Queries语句: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 附关闭Ad ...
  • Java Web中如何访问数据库

    千次阅读 2016-05-14 11:16:38
    对于数据库访问,有很多方式,这里我们进行实现一个简单的示例访问,使用DAO和VO进行访问,下面是示例代码 首先,我们进行建立一个JavaBean类,命名为Student.java类,具体代码如下所示,其中注释如下: package ...
  • * 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...
  • jdbc访问数据库的步骤

    2012-12-12 22:14:57
    jdbc原理 jdbc访问数据库的步骤 数据库
  • 一个实例,VC和ACCESS数据库进行开发的一个实例,包括数据库的连接,访问关闭等。
  • Sql数据库备份还原(解决因为数据库正在使用,所以无法获得对数据库的独占访问权问题)
  • 数据库访问层中间件Zebra

    千次阅读 2019-07-15 13:35:14
    数据库访问层中间件Zebra zebra是一个基于JDBC API协议上开发出的高可用、高性能的数据库访问层解决方案。类似阿里的tddl,zebra是一个smart客户端,提供了诸如动态配置、监控、读写分离、分库分表等功能。下图是...
  • 以前遇到这个问题都是把数据库关掉再打开。 后来发现了一个简便方法: 在数据库中输入以下代码(当前数据库要选为master) ALTER DATABASE [库名] SET OFFLINE WITH ROLLBACK IMMEDIATE 还原数据库之后,再...
  • 问题二描述:在SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权。(Microsoft.SqlServer.Smo)。出现此问题的原因是在还原数据库时,有...
  • C#使用ADO.NET访问数据库

    千次阅读 2020-07-16 12:51:28
    常用的数据库访问技术2.认识ADO.NET技术1.ADO.NET的命名空间及导入2.ADO.NET的工作原理及访问架构1.各种数据库/数据源2..NET数据提供程序3.数据集DataSet3.客户端应用程序基于ADO.NET的两种数据访问模式1.通过...
  • 远程访问SQL Server数据库

    千次阅读 2019-05-27 22:23:24
    最近在学习WPF,写了一个管理系统其中用到了SQL 数据库,需要在外网访问位于公司电脑的数据库,如果你正是这种情况,那么这篇文章适合你,其实上述问题解决,局域网内的数据库访问更是没问题了。相关问题网上我收了...
  • Linux下访问数据库

    万次阅读 2019-08-02 22:40:33
    Linux下访问数据库 声明:本文只简单描述Linux系统下访问mysql数据库的步骤,关于连接上数据库之后的简单的对于数据库的增删改查等操作只是稍微提及,关于增删改查的语句书写,本文不再讲述。 一般来说,访问...
  • 3种方式限制ip访问Oracle数据库

    千次阅读 2020-08-18 17:57:49
    墨墨导读:本文来自墨天轮读者投稿,分享了3种限制某个ip或某个ip段访问Oracle数据库的方式,希望大家有帮助。一、概述本文将给大家介绍如何限制某个ip或某个ip段才能访问Oracl...
  • Java访问数据库的具体步骤:

    千次阅读 2018-06-08 15:28:40
    1.加载(注册)数据库驱动加载就是把各个数据库提供的访问数据库的API加载到我们程序进来,加载JDBC驱动,并将其注册到DriverManager中,每一种数据库提供的数据库驱动不一样,加载驱动时要把jar包添加到lib文件夹下...
  • VB.Net - 数据库访问

    千次阅读 2018-03-01 09:35:53
    VB.Net - 数据库访问应用程序与数据库通信,首先,检索存储在那里的数据,并以用户友好的方式呈现它,其次,通过插入,修改和删除数据来更新数据库。Microsoft ActiveX Data Objects.Net(ADO.Net)是一个模型,.Net...
  • JDBC数据库访问Demo

    千次阅读 2017-04-16 17:34:21
    用于执行SQL语句的Java API,由一组类和接口组成,应用程序通过调用JDBC中这些类和接口中的方法,可以实现对数据库内容的访问。 JDBC驱动程序:实现应用程序和数据库的接口。因为数据库产品很多(诸于oracle,SQL ...
  • 案例二 JAVA 数据库访问; JDBC;程序步骤;获得数据库连接;不同的数据库DriverClass和URL是不同的;执行SQL语句;获取数据;关闭连接? ;元数据的作用;利用元数据继续修改JDBCUtil;反射;Oracle官方反射的解释是;反射最...
  • VC++数据库访问的类

    2010-07-20 16:14:26
    一个VC++数据库访问的类,方便地进行连接的打开,记录集的打开,关闭,以及访问Datagrid.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 483,864
精华内容 193,545
关键字:

关闭对数据库的访问