ADO最新实用基础教程
基本流程
(1)初始化COM库,引入ADO库定义文件 (2)用Connection对象连接数据库 (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记 录集进行查询、处理。 (4)使用完毕后关闭连接释放对象。
使用_ConnectionPtr接口
_ConnectionPtr主要是一个连接接口,取得与数据库的连接。它的连接字符串可以是自己直接写,也可以指向一个ODBC DSN。
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: 允许其它程序或对象以任何权限建立连接
◆常用的数据库连接方法: (1)通过JET数据库引擎对ACCESS2000数据库的连接m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\test.mdb","","",adModeUnknown); (2)通过DSN数据源对任何支持ODBC的数据库进行连接:m_pConnection->Open("Data Source=adotest; UID=sa; PWD=; ","","",adModeUnknown); //m_pConnection->Open("DSN=test; ","","",0); //连接叫作test的ODBC数据源 (3)不通过DSN对SQL SERVER数据库进行连接: m_pConnection->Open("driver={SQL Server}; Server=127.0.0.1; DATABASE=vckbase; UID=sa; PWD=139","","",adModeUnknown); 其中Server是SQL服务器的名称,DATABASE是库的名称 ◆先介绍Connection对象中两个有用的属性ConnectionTimeOut与StateConnectionTimeOut用来设置连接的超时时间,需要在Open之前调用,例如: m_pConnection->ConnectionTimeout = 5; //设置超时时间为5秒 m_pConnection->Open("Data Source=adotest; ","","",adModeUnknown); State属性指明当前Connection对象的状态,0表示关闭,1表示已经打开,我们可以通过读取这个属性来作相应的处理,例如:if(m_pConnection->State) m_pConnection->Close(); //如果已经打开了连接则关闭它
_ConnectionPtr pConn;
if (FAILED(pConn.CreateInstance("ADODB.Connection")))
{
AfxMessageBox("Create Instance failed!");
return;
}
CString strSRC;
strSRC="Driver=SQL Server; Server=";
strSRC+="suppersoft";
strSRC+="; Database=";
strSRC+="mydb";
strSRC+="; UID=SA; PWD=";
CString strSQL = "Insert into student(no,name,sex,address) values(3,'aaa','male','beijing')";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
_bstr_t bstrSRC(strSRC);
if (FAILED(pConn->Open(bstrSRC,"","",-1)))
{
AfxMessageBox("Can not open Database!");
pConn.Release();
return;
}
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
pConn->Execute(_bstr_t(strSQL),&vtOptional,-1);
pConn.Release();
AfxMessageBox("ok!");
使用_RecordsetPtr接口(以连接SQL Server为例)
_RecordsetPtr pPtr;
if (FAILED(pPtr.CreateInstance("ADODB.Recordset")))
{
AfxMessageBox("Create Instance failed!");
return FALSE;
}
CString strSRC;
strSRC="Driver=SQL Server; Server=";
strSRC+="210.46.141.145";
strSRC+="; Database=";
strSRC+="mydb";
strSRC+="; UID=sa; PWD=";
strSRC+="sa";
CString strSQL = "select id,name,gender,address from personal";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
{
AfxMessageBox("Open table failed!");
pPtr.Release();
return FALSE;
}
while(!pPtr->GetadoEOF())
{
_variant_t varNo;
_variant_t varName;
_variant_t varSex;
_variant_t varAddress;
varNo = pPtr->GetCollect ("id");
varName = pPtr->GetCollect ("name");
varSex = pPtr->GetCollect ("gender");
varAddress = pPtr->GetCollect ("address");
CString strNo =(char *)_bstr_t(varNo);
CString strName =(char *)_bstr_t(varName);
CString strSex =(char *)_bstr_t(varSex);
CString strAddress =(char *)_bstr_t(varAddress);
strNo.TrimRight();
strName.TrimRight();
strSex.TrimRight();
strAddress.TrimRight();
int nCount = m_list.GetItemCount();
int nItem = m_list.InsertItem (nCount,_T(""));
m_list.SetItemText (nItem,0,strNo);
m_list.SetItemText (nItem,1,strName);
m_list.SetItemText (nItem,2,strSex);
m_list.SetItemText (nItem,3,strAddress);
pPtr->MoveNext();
}
pPtr->Close();
pPtr.Release();
使用_CommandPtr接口
_CommandPtr接口返回一个Recordset对象,并且提供了更多的记录集控制功能,以下代码示例了使用_CommandPtr接口的方法:
代码11:使用_CommandPtr接口获取数据
_CommandPtr pCommand;
_RecordsetPtr pRs;
pCommand.CreateInstance(__uuidof(Command));
pCommand->ActiveConnection=pConn;
pCommand->CommandText="select * from student";
pCommand->CommandType=adCmdText;
pCommand->Parameters->Refresh();
pRs=pCommand->Execute(NULL,NULL,adCmdUnknown);
_variant_t varValue = pRs->GetCollect("name");
Cstring strValue=(char*)_bstr_t(varValue);
使用js在网页弹出中文日期框
日期选择框,在我们很多开发是都会用到,这个主要是用js写的主要是因为是中文的日期框才拿出来和大家分享的
10天学会ASP基础教程
学习目的:学会数据库的基本操作3(删除记录)
开门见山,大家直接看程序。
exec="delete * from guestbook where id="&request.form("id")
上面这句话完成了删除记录的操作,不过锁定记录用了记录唯一的表示id,我们前面建立数据库的时候用的是系统给我们的主键,名字是编号,由于是中文的名字不是很方便,大家可以修改为id,不修改的话就是
exec="delete * from guestbook where 编号="&request.form("id")
下面我们看完整的代码:一个表单传给ASP文件一个ID,然后这个ASP文件就删除了这个ID。
<form name="form1" method="post" action="example7.asp">
delete:
<input type="text" name="id">
<input type="submit" name="Submit" value="提交">
</form>
example7.asp:
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
exec="delete * from guestbook where 编号="&request.form("id")
conn.execute exec
%>
我在示例里面加了一个example72.asp,和example4.asp差不多,就是加了一个id字段,大家可以先运行这个文件看一下所有记录的ID和想删除记录的ID,删除记录以后也可以通过这个文件复查。等到最后一天,我们会把所有的这些东西整合的。大家就不会需要这么麻烦的操作。
example72.asp:
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
exec="select * from guestbook"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("编号")%></td>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
</html>
struts2.3+hibernate3.6+spring3.1整合的纯xml配置的小项目
application.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="org.whvcse"></context:component-scan>
<tx:annotation-driven transaction-manager="txManager" />
<!--
<aop:config> <aop:pointcut id="defaultServiceOperation"
expression="execution(* x.y.service.*Service.*(..))" /> <aop:pointcut
id="noTxServiceOperation" expression="execution(*
x.y.service.ddl.DefaultDdlManager.*(..))" /> <aop:advisor
pointcut-ref="defaultServiceOperation" advice-ref="defaultTxAdvice" />
<aop:advisor pointcut-ref="noTxServiceOperation"
advice-ref="noTxAdvice" /> </aop:config>
<bean id="fooService" class="x.y.service.DefaultFooService" />
<bean id="anotherFooService" class="x.y.service.ddl.DefaultDdlManager" />
<tx:advice id="defaultTxAdvice">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<tx:advice id="noTxAdvice">
<tx:attributes>
<tx:method name="*" propagation="NEVER" />
</tx:attributes>
</tx:advice>
-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="annotatedClasses">
<list>
<value>
org.whvcse.model.Userinfo
</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>