首先本地要有一个数据库软件1、远程公网的IP地址2、数据库名3、用户名4、密码在你的本地数据库搜索加入组。就可以在本地直连接到远程数据库了!或者空间商会提供你数据库的IP你可以在本地备份好数据库用FTP上传软件上传到空间商的网页管理器还原数据库,就可以了!
VB访问SQLServer数据库技术全揭密(1)
本文讨论了VisualBasic应用程序访问SQLServer数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。
一、引言
SQLServer是微软推出的中小型网络数据库系统,是目前最常用的数据库系统之一。随着SQLServer网络数据库应用程序日益增多,这种Web数据库应用系统的正常运行一般依赖于已存在的用户数据库。创建维护数据库的工作可用SQLServer提供的SQLEnterpriseManager工具来进行,如能提供一种定制的数据库管理工具,通过管理应用程序来管理数据库及其设备,对用户来说无疑是最理想的。
VisualBasic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。而且Microsoft为其提供了与SQLServer通信的API函数集及工具集,因此它越来越多地用作大型公司数据和客户机—服务器应用程序的前端,与后端的MicrosoftSQLServer相结合,VB能够提供一个高性能的客户机—服务器方案。
二、VB访问SQLServer数据的常用方法
使用VisualBasic作为前端开发语言,与SQLServer接口有几种常用的方法,即:
①数据访问对象/Jet
②为ODBCAPI编程
③使用SQLServer的VisualBasic库(VBSQL)为DB库的API编程
④RDO远程数据对象(RemoteDataObjects)
⑤ADO数据对象(ActiveDataObjects)
1、数据访问对象/Jet
VB支持DataAessObjects(DAOs)的子集。DAO的方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它的确有许多优点。DAO/Jet是为了实现从VB访问Aess数据库而开发的程序接口对象。使用DAOs访问SQLServer的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBCDLL)通过调用驱动器(SQLSRVRDLL)的函数,实现连接到数据源,翻译并向SQLServer提交SQL语句且返回结果。下面是一个用DAOs访问SQLServer的VB实例。
注释:Form
DimmydbAsDatabase
DimmydynasetAsDynasetオ
PrivateSubForm_Load()
Setmydb=("",False,False,"ODBC;DSN=Myserver;WSID=LCL;DATABASE=sales")
Setmydynaset=mydb("SelectfromCustomers")オ
EndSubァ
上述例子是以非独占、非只读方式打开sales数据库,并检索Customers表中的所有字段。函数的最后一个参数是ODBC连接字符串参数,它指明了MicrosoftAess连接到SQLServer所需要知道的一些内容。其中“DSN”为数据源名,“WSID”为工作站名,“DATABASE”为所要访问的数据库名。
2、利用ODBCAPI编程
ODBC(OpenDatabase)的思想是访问异种数据库的一种可移植的方式。与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBCDLL)的动态连接中。应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器(SQLSRVRDLL)把它们送到服务器中。
下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句句柄。
GlobalgiHEnvAsLong
GlobalgiHDBAsLong
GlobalgiHStmtAsLong
DimmyResultAsinteger
DimAsSrting
DimmyBuffAsString256
DimmyBufflenAsInteger
IfSQLAllocEnv(giHEnv)SQL_SUCCESSThen
MsgBox"Allocationcouldn注释:thappen!"
EndIf
If(giHEnv,giHDB)SQL_SUCCESSThen
MsgBox"SQLServercouldn注释:tconnect!"
EndIf
="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABASE=sales"
myResult=(giHDB,Test,form1hWnd,len(),myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQUIED)
myResult=(giHDS,giHStmt)
myResult=SQLFreeStmt(giHStmt,SQL_COLSE)
rsSQL="SelectfromCustomersWhereCity="Hunan""
myResult=(giHStmt,rsSQL,Len(rsSQL))
3、使用VBSQL对DB库API编程
DB库是SQLServer的本地API,SQLServer的VisualBasic库(VBSQL)为VisualBasic程序员提供API。从一定意义上说,VBSQL是连接VisualBasic程序到SQLServer的性能最好最直接的方式。VBSQL包含以下三个文件:
VBSQLVBX:包含库函数,具有访问重要的消息和处理错误的能力
VBSQLBI:包括所有的常量和变量说明
VBSQLHLP:Windows帮助文件,使用VBSQL的指南
使用VBSQL时,必须将VBSQLBI加入到VisualBasic工程文件中,并确保VB程序运行时有VBSQLVBX文件。
一般的DB库API编程的过程是这样的:先通过调用SqlInit对DB库进行初始化,再调用打开一个连接,然后就可做一些工作。下面的代码是一个初始化DB库并登录到服务器的通用例程
1、配置ODBC数据源。
2、使用SQL函数进行连接。
对于1、配置数据源,配置完以后就可以编程 *** 作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
#include<windowsh>
#include<sqlh>
#include<sqlexth>
void main()
{
HENV henv; //环境句柄
HDBC hdbc; //数据源句柄
HSTMT hstmt; //执行语句句柄
unsigned char datasource[]="数据源名称"; //即源中设置的源名称
unsigned char user[]= "用户名"; //数据库的帐户名
unsigned char pwd[]= "密码"; //数据库的密码
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //记录各SQL函数的返回情况
// 分配环境句柄
retcode= SQLAllocEnv(&henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL
, &henv);
// 设置ODBC环境版本号为30
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void)SQL_OV_ODBC3, 0);
// 分配连接句柄
retcode= SQLAllocConnect(henv,&hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//设置连接属性,登录超时为rgbValue秒(可以没有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
//直接连接数据源
// 如果是windows身份验证,第二、三参数可以是
,也可以是任何字串
//SQL_NTS 即 "
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配语句句柄
retcode= SQLAllocStmt(hdbc,&hstmt); // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//直接执行查询语句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍历结果集到相应缓冲区 queryData
SQLFetch(hstmt);
/
对遍历结果的相关 *** 作,如显示等
/
//注意释放顺序,否则会造成未知错误!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
创建一个以JDBC连接数据库的程序,包含7个步骤:
1、JDBC所需的四个参数(user,password,url,driverClass)
(1)user用户名;
(2)password密码;
(3)URL定义了连接数据库时的协议、子协议、数据源标识。
书写形式:协议:子协议:数据源标识。
协议:在JDBC中总是以jdbc开始。
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/testuseUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
(4)driverClass连接数据库所需的驱动。
2、加载JDBC驱动程序
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过javalangClass类的静态方法forName(String className)实现。
例如:
成功加载后,会将Driver类的实例注册到DriverManager类中。
3、创建数据库的连接
要连接数据库,需要向javasqlDriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。使用DriverManager的getConnectin(String url , String username ,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
例如:
4、创建一个preparedStatement
要执行SQL语句,必须获得javasqlStatement实例,Statement实例分为以下3种类型:
(1)执行静态SQL语句。通常通过Statement实例实现。
(2)执行动态SQL语句。通常通过PreparedStatement实例实现。
(3)执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate 和execute
(1)ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。
(2)int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等。
(3)execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
具体实现的代码:
6、遍历结果集
两种情况:
(1)执行更新返回的是本次 *** 作影响到的记录数。
(2)执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
使用结果集(ResultSet)对象的访问方法获取数据:
注:列是从左到右编号的,并且从列1开始。
7、处理异常,关闭JDBC对象资源
*** 作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
(1)先关闭requestSet
(2)再关闭preparedStatement
(3)最后关闭连接对象connection
实现代码如下:
requestSetclose();
preparedStatementclose();
connectionclose();
连接方法如下:
1建立一个web项目
2把数据库驱动复制到lib目录下。数据库驱动有:mysql,sqlserver,oracle等 是什么样类型的数据导入相应驱动。
3编写一个连接数据库的工具类,获取一个连接。下面以mysql数据库为例。
核心代码:
public class DataUtils {
/
从数据中获取一个连接
@return
/
public static Connection getConn(){
Connection conn = null;
try {
ClassforName("commysqljdbcDriver")newInstance();
//表为test,用户名root,密码admin。
conn = DriverManagergetConnection("jdbc:mysql://localhost:3306/test", "root", "admin");
} catch (Exception e) {
eprintStackTrace();
}
return conn;
}
}
4获取到与相应数据库的连接后,就可以做增删改查 *** 作了。记得做完 *** 作后,关闭连接,释放资源。
1、您需要掌握的第一件事是数据库查询语句。这是最简单的数据库查询语句:SELECTFROMsys_role,这意味着从角色表中查询所有信息。以下显示了查询结果。此结果需要显示在首页上。需要代码来调用这个sql语句。
2、在xml(springmvc配置文件)中配置数据库连接池以确保数据的正常连接,这里需要注意连接ip和数据库名称。
3、首先在控制层(逻辑处理层)调用后台查询功能,然后返回页面,因为数据库可能很大,所以需要使用分页工具来确保内存容量。
4、业务逻辑层,一般来说是实现接口,这里是实现类,实现业务的分配,这里需要调用数据库Dao层方法。
5、最后,mybatis的查询语句写在mybatis的配置文件中,然后封装到一个方法中,该方法与原来的SELECTFROMsys_role不同,主要是添加分页和排序(orderby)。
6、最后,回到jsp页面,根据之前的控制层页面输出,我们需要编写一个rolejsp文件,该文件主要遍历查询数据,使用标记遍历表单。
7、最后,使用前端页面框架,您可以显示如下所示的前端样式显示。
网站链接不到数据库分很多情况?
1你网站服务器和数据库服务器是否可以正常ping通(假设你是分机部署的)
2假设可以ping通,查看防火墙是否允许数据库指定端口的链接(win平台上直接关闭防火墙或则配置准入;类unix平台上直接修改iptab来控制准入,比如添加一条entry允许在1521(oracle)1442(mssqlserver)上的接入 *** 作)
3查看数据库是否正常开启(win上直接查看服务,类unix平台上可以使用ps-ef|grep关键字来查看指定进程是否开启,oracle情况下还需要监听tnslsnr是否开启)
排除以上问题,那就找找网站的问题
1网站最近是否升级,比如更换了数据库的驱动,这是可能之一
2网站的数据库连接应该是从可配置的平面文件中读取用户名和密码,这2个是否错误
3你们的dba是否最近修改了数据库的用户名和密码
4你们的数据库是否被人用类似ddos攻击,就说被人不停的连接连接,撑到数据库支持的上限后,正常连接就无法建立了。
5你们的程序员是不是没有释放连接,或则你们的数据源释放连接和建立的连接的策越有问题。
希望对你有帮助
导入javasql包 \x0d\一、加载要连接数据库的驱动程序 \x0d\//Jdbc-Odbc桥 和 Microsoft Access 数据库 \x0d\ClassforName("sunjdbcodbcJdbcOdbcDriver"); \x0d\// SQL Server 驱动程序: \x0d\ClassforName("commicrosoftjdbcsqlserverSQLServerDriver"); \x0d\注:ClassforName()方法将给定的类加载到JVM,如果系统中不存在给定的类,则会引发异常 \x0d\二、通过驱动程序管理器得到连接实例 \x0d\Connection conn=null; \x0d\//1 \x0d\//11建立数据源 \x0d\conn=DriverManagergetConnection("jdbc:odbc:MyDataSource"); //MyDataSource是数据源名称 \x0d\//1-2、不建立数据源 \x0d\conn=DriverManagergetConnection("jdbc:odbc:;Driver=Microsoft Access Driver (mdb);DBQ=C:\\VBTestmdb"); \x0d\//2SQL Server \x0d\conn=DriverManagergetConnection("jdbc:microsoft:sqlserver://127001:1433;databasename=mydb","sa",""); \x0d\\x0d\注:DriverManager类跟踪已注册的驱动程序,通过getConnection(URL)方法, 找到一个能够连接至URL中指定的数据库驱动程序 \x0d\它接收三个参数, 分别表示1 数据源的名称、类型 2 用户名(可选) 3 密码(可选) \x0d\三、基于连接对象建立处理器对象 \x0d\Statement stmt=conncreateStatement(); \x0d\四、准备sql命令 \x0d\String sql="select from Student"; \x0d\五、执行命令返回结果集 \x0d\ResultSet rs=stmtexecuteQuery(sql); \x0d\六、显示结果集 \x0d\while(rsnext())//只要后面有记录 \x0d\{ \x0d\//对当前行的所有字段遍历 \x0d\for(int i=1;i回答于 2022-12-11
以上就是关于数据库怎么连接全部的内容,包括:数据库怎么连接、网络怎么连接数据库、c语言怎样连接数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)