当前位置:首页 » 数据仓库 » 数据库的访问
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库的访问

发布时间: 2022-03-07 03:13:13

1. 访问数据库的方式有哪些啊

在ASP中可以通过三种方式访问数据库:

1、IDC(Internet Database Connector)方式;

2、ADO(ActiveX Data Objects)方式;

3、RDS(Remote Data Service)方式。

这三种访问方式对数据库的访问都是由Internet Information Server完成的。通过Web浏览器用HTTP协议向IIS(Internet信息服务器)发送请求,IIS执行对数据库的访问,并返回一个HTML格式的文档响应

2. Web数据库的访问技术

Web数据库访问技术通常是通过三层结构来实现的。目前建立与Web数据库连接访问的技术方法可归纳为CGI技术,ODBC技术和ASP、JSP、PHP技术。
CGI技术
CGI(Common Gateway Interface,通用网关界面)是一种Web服务器上运行的基于Web浏览器输入程序的方法,是最早的访问数据库的解决方案。CGI程序可以建立网页与数据库之间的连接,将用户的查询要求转换成数据库的查询命令,然后将查询结果通过网页返回给用户。
CGI程序需要通过一个接口才能访问数据库。这种接口多种多样,数据库系统对CGI程序提供了各种数据库接口如Perl、C/C++、VB等。为了使用各种数据库系统,CGI程序支持ODBC方式,通过ODBC接口访问数据库。
ODBC技术
ODBC(Open Database Connectivity,开放数据库互接)是一种使用sql的应用程序接口(API)。ODBC最显着的优点就是它生成的程序与数据库系统无关,为程序员方便地编写访问各种DBMS的数据库应用程序提供了一个统一接口,使应用程序和数据库源之间完成数据交换。ODBC的内部结构为4层:应用程序层、驱动程序管理器层、驱动程序层、数据源层。它们之间的关系如图1-5所示。由于ODBC适用于不同的数据库产品,因此许多服务器扩展程序都使用了包含ODBC层的系统结构。
Web服务器通过ODBC数据库驱动程序向数据库系统发出SQL请求,数据库系统接收到的是标准SQL查询语句,并将执行后的查询结果再通过ODBC传回Web服务器,Web服务器将结果以HTML网页传给Web浏览器,工作原理如图1-6所示。
由于Java语言所显示出来的编程优势赢得了众多数据库厂商的支持。在数据库处理方面,Java提供的JDBC为数据库开发应用提供了标准的应用程序编程接口。与ODBC类似,JDBC也是一种特殊的API,是用于执行SQL语句的Java应用程序接口。它规定了Java如何与数据库之间交换数据的方法。采用Java和JDBC编写的数据库应用程序具有与平台无关的特性。
ASP、JSP、PHP技术
ASP是Microsoft开发的动态网页技术,主要应用于Windows NT+IIS或 Windows 9x+PWS平台。确切地说ASP不是一种语言,而是Web服务器端的开发环境。利用ASP可以产生和运行动态的、交互的、高性能的Web服务应用程序。ASP支持多种脚本语言,除了VBScript和Pscript,也支持Perl语言,并且可以在同一ASP文件中使用多种脚本语言以发挥各种脚本语言的最大优势。但ASP默认只支持VBScript和Pscript,若要使用其他脚本语言,必须安装相应的脚本引擎。ASP支持在服务器端调用ActiveX组件ADO对象实现对数据库的操作。在具体的应用中,若脚本语言中有访问数据库的请求,可通过ODBC与后台数据库相连,并通过ADO执行访问库的操作。关于ASP的编程技术将会在第7章中详细介绍。
JSP是Sun公司推出的新一代Web开发技术。作为Java家族的一员,几乎可以运行在所有的操作系统平台和Web服务器上,因此JSP的运行平台更为广泛。目前JSP支持的脚本语言只有Java。JSP使用JDBC实现对数据库的访问。目标数据库必须有一个JDBC的驱动程序,即一个从数据库到Java的接口,该接口提供了标准的方法使Java应用程序能够连接到数据库并执行对数据库的操作。JDBC不需要在服务器上创建数据源,通过JDBC、JSP就可以实现SQL语句的执行。
PHP是Rasmus Lerdorf推出的一种跨平台的嵌入式脚本语言,可以在Windows、UNIX、Linux等流行的操作系统和IIS、Apache、Netscape等Web服务器上运行,用户更换平台时,无需变换PHP代码。PHP是通过Internet合作开发的开放源代码软件,它借用了C、Java、Perl语言的语法并结合PHP自身的特性,能够快速写出动态生成页面。PHP可以通过ODBC访问各种数据库,但主要通过函数直接访问数据库。PHP支持目前绝大多数的数据库,提供许多与各类数据库直接互连的函数,包括Sybase、Oracle、SQL Server等,其中与SQL Server数据库互连是最佳组合。

3. java如何访问数据库

Java可以使用JDBC访问数据库,也可以使用各类ORM框架访问数据库,但这些框架最终还是通过JDBC访问数据库,它们只是封装了数据库操作,而使得开发者可以减少这部分消耗。因此,本文只讲解JDBC访问方式。
JDBC访问一般分为如下流程:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
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):用于执行返回多个结果集、多个更新计数或二者组合的语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
•ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
•使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1); // 此方法比较高效(列是从左到右编号的,并且从列1开始)
}
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

4. Java 如何进行数据库访问的

1. 加载一个对应数据库的JDBC驱动

在建立到一个数据库的连接之前,必须先加载这个数据库的JDBC驱动程序,加载之后此driver会自动注册到JDBC驱动列表中。加载一个JDBC驱动有两种方法。

a) 在命令行方式下指定驱动器或者用冒号分割驱动器列表:

具体命令如下:

C:\>java –Djdbc.drivers = com.company1.Driver:com.company2.Driver youProject

b)第二种方法,在程序中调用Class.forName()方法。推荐使用。。。。

try

{

String driverName = “com.imaginary.sql.msql.MsqlDriver”;

Class.forName(driverName).newInstance();

}

Catch(ClassNotFoundException e1)

{

//catch could not find database driver exception.

}

2.连接到数据库。

根据您后台待连接的数据库不同,而有小小的差别。

a) 连接到Oracle数据库。

Connection connection = null ;

try

{

//load the jdbc driver ;

String driverName = “oracle.jdbc.driver.OracleDriver”;

Class.forName(driverName).newInstance();

//create a connection to the database;

String serverName = “127.0.0.1”;

String serverPort = “1521”;

String serverID = “datebase1”

String userName = “hello”;

String userPsw = “world”;

String url = “jdbc:oracle.thin:@” + serverName + “:” + serverPort + “:” + serverID ;

Connection = DriverManager.getConnection(url , userName , userPsw);

}

catch(ClassNotFoundException e1)

{

//catch could not find database driver exception.

}

catch(SQLException e2)

{

//catch could not connect to the database exception.

}

b) 连接到一个SQL Server数据库。

Connection connection = null ;

try

{

//load the jdbc driver ;

String driverName = “com.microsoft.jdbc.sqlserver.SQLServerDriver”;

Class.forName(driverName).newInstance();

//create a connection to the database;

String serverName = “127.0.0.1”;

String serverPort = “1433”;

String serverID = serverName + serverPort ;

String userName = “hello”;

String userPsw = “world”;

String url = “jdbc:JSQLConnect ://” + serverID ;

Connection = DriverManager.getConnection(url , userName , userPsw);

}

catch(ClassNotFoundException e1)

{

//catch could not find database driver exception.

}

catch(SQLException e2)

{

//catch could not connect to the database exception.

}

c) 连接到一个MySQL数据库上。。。。

Connection connection = null ;

try

{

//load the jdbc driver ;

String driverName = “org.gjt.mm.mysql.Driver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverID = “database”;
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:mysql ://” + serverName + “/” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
综合上面的三种数据库连接方式 , 其实大同小异。由于访问不同的数据库和所使用的数据库驱动程序不同,所以导致代码表面上有小小不同,但透过表面看来,内部都是
1. 加载一个特定的数据库JDBC驱动。
2. 连接到一个数据库。
3. 之后,就可以对一个特定的数据库进行特定的操作了。

5. 访问SQL数据库

1.数据库建表,
create table mytable(
pkid nvarchar(40) not null,
a nvarchar(40) null )
insert into mytable(pkid,a) values(newid(),'测试')
2.新建对应此表的实体类
[Serializable]
public class mytable {
private String _pkid = "";
public String pkid { get { return _pkid; } set { _pkid = value; } }
private String _a = ""; public String a { get { return _a; } set { _a = value; } } } 3.新建操作类:
public class mytableDAO {
private String _ConnectionString;
public mytableDAO(String ConnectionString) {
this._ConnectionString = ConnectionString; }
public int New(Entities.MsgRecord obj) {
String sql = "insert into mytable(pkid,a) values(@pkid,@a)";
SqlConnection cn = new SqlConnection(this._ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.Parameters.AddWithValue("@a", obj.a); cmd.Parameters.AddWithValue("@pkid",
String.Empty.Equals(obj.pkid) ? System.Guid.NewGuid().ToString() : obj.pkid);
try {
if (cn.State != ConnectionState.Open)
cn.Open();
return cmd.ExecuteNonQuery(); }
catch { return -1; }
finally {
if (cn.State != ConnectionState.Closed)
cn.Close(); } }
public int Update(Entities.mytable obj) {
String sql = "Update mytable Set a=@a Where pkid=@ObjectID";
SqlConnection cn = new SqlConnection(this._ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.Parameters.AddWithValue("@a", obj.a);
cmd.Parameters.AddWithValue("@pkid", obj.pkid);
try {
if (cn.State != ConnectionState.Open)
cn.Open();
return cmd.ExecuteNonQuery(); }
catch { return -1; }
finally {
if (cn.State != ConnectionState.Closed)
cn.Close(); } }
public int Del(Entities.mytable obj) {
String sql = "delete from mytable Where pkid=@ObjectID";
SqlConnection cn = new SqlConnection(this._ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn); cmd.Parameters.AddWithValue("@ObjectID", obj.pkid); try { if (cn.State != ConnectionState.Open) cn.Open(); return cmd.ExecuteNonQuery(); } catch { return -1; } finally { if (cn.State != ConnectionState.Closed) cn.Close(); } } public int Del(String where) { String sql = String.Format("delete from mytable Where {0}", where.ToLower().Replace("update", "").Replace("delete", "")); SqlConnection cn = new SqlConnection(this._ConnectionString); SqlCommand cmd = new SqlCommand(sql, cn); try { if (cn.State != ConnectionState.Open) cn.Open(); return cmd.ExecuteNonQuery(); } catch { return -1; } finally { if (cn.State != ConnectionState.Closed) cn.Close(); } } public DataTable Query(String where) { String sql = String.Format("select * from mytable Where {0}", where.ToLower().Replace("update", "").Replace("delete", "").Replace("insert", "").Replace(";", "").Replace("--", "").Replace("exec", "")); try { SqlDataAdapter da = new SqlDataAdapter(sql, new SqlConnection(this._ConnectionString)); DataTable dt = new DataTable(); da.Fill(dt); return dt; } catch { return null; } } }
4.在ui中调用:
4.1 新增: private void NewData() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); mytable obj=new mytable(); obj.a=this.txtbox_a.Text; obj.b=this.txtbox_b.Text; obj.c=this.txtbox_c.Text; .New(obj); }
4.2 取数据绑定GridView private void LoadData_InitGridView() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); Table dt=.Query(String.Format(" a ='{0}'",this.txtbox_a.Text)); //gridview this.GridView1.DataSource=dt; this.GridView1.DataBind(); //textbox control this.textbox_a.Text=dt.Rows[0][0].ToString(); }
4.3删除 private void Del() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); .Del(where); }
4.4更新 private void Update() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); .Update(obj);//obj 为mytable的一个实例:需要更新的 }
5.配置文件中连接信息 <connectionStrings> <add name="dbCon" connectionString="Data Source=192.168.1.100;Initial Catalog=Northwind;User ID=sa;PassWord=sa" providerName="System.Data.SqlClient"/> </connectionStrings>
6.读取连接信息 System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString

6. 数据库如何访问

关于如果访问的问题分3步吧
1.赠送方应该告诉你放置你数据库的服务器地址,以及数据库的用户名和密码,不过一般用户名和密码是你提供给赠送方,他们帮你设置好的。
2.你本地装有MYSQL和MSSQL数据库。
3.对本地数据库进行访问远程数据库的设置。
最后一步要自己具体操作的。

一般来说数据库的服务器和网站的服务器是分开的,你说的自行建立文件夹当作数据库我不太明白你到底是什么意思,如果你用的是access数据库,就可以方便地在本地建立。

7. SQL Server中在A数据库下如何访问B数据库中的C表:

有两种情况
1、若两个数据库在不同的电脑上,那先在A上注册B
2、若在同一台电脑上则可以跳过第一步

代码:
SELECT * FROM B.DBO.C 即可

本人在两个数据库中转移数据就是这样做的。

8. 常用的数据库访问方式是什么

mysql,sqlserver,oracle,access等等,这些都是很有名的,
但是再用的时候一般根据所用的编程语言选择使用的数据库,
比如mysql开源的,和php结合比较好。
sqlserver是微软的,和.net之类配合使用较好。
oracle一般大型项目使用较多

9. 一个项目访问两个数据库和访问一个数据库的差别, 访问性能上有什么差别

我们做项目经常访问多个数据库,管理库单独的,还有一些业务数据库。访问多个数据库其实根本没什么性能上的差异,看你怎么配置的。池,缓存等等。还有你的程序是怎么连接处理数据的。所以说访问一个或者多个数据库在性能上都不是问题。

10. 如何直接访问网站的数据库

楼上的这种问题我也遇到过,往往是设计网站界面视图的人没有考虑到所有的需求,提供的数据库查询不够灵活。

确实有可能找到办法去访问这个数据库,不过应该提醒楼主,网站做界面的目的出了美观方便外,就是要限制用户不访问,所以通过非正常途径访问就要承担一定的责任了。

具体方法有:

1.理想方法:得到数据库的地址,例如楼上说的把mdb文件直接下载下来。当然很少有网站用access做数据库的,一般情况是需要知道数据库IP地址,数据库类型,库名,用户名和密码,然后通过toad等客户端软件来访问。
既然是理想方法,这种情况不太可能发生,除非你是内部人士,可以知道很多信息。因为通常数据库服务器会放在局域网上,不能被外部访问到。

2.实际方法:采用SQL注入等黑客技术。SQL注入是最简单的黑客技术了,不过由于简单威力也不会很大,要求网站设计对于安全的考虑不周,存在漏洞才行。
由于网站设计不周,就会在出错或者某些情况下暴露出数据库表结构的一些内幕,这样就可以写出你想要的SQL命令,把它插入到Web表单递交,或者页面请求的查询字符串中,最终达到欺骗服务器执行的目的。

如果楼主想了解更多,可以学学黑客知识,祝楼主好运!