【symfoware OPEN】数据库应用开发

Symfoware  OPEN系

- 导入方法、连接形式、执行方法

JDBC(Java DataBase Connectivity)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API),它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。

ODBC(Open DataBase Connectivity)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API),它以X/Open和 ISO/IEC的调用级接口(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。

JDBC/ODBC总体结构有四个组件:
应用程序,驱动程序管理器,驱动程序,数据源。

JDBC驱动程序管理器是内置的,驱动程序本身也可通过Web浏览器自动下载,无须安装、配置;而ODBC驱动程序管理器和ODBC驱动程序必须在每台客户机上分别安装、配置。

Java程序连接数据库的方式有三种方式:OCI方式、thin方式和JdbcOdbc桥方式:
OCI方式:
应用程序---JDBC API---驱动程序---数据源
Thin方式:
thin方式是纯java实现tcp/ip的通讯,而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装
JdbcOdbc桥方式(用于windows平台):
应用程序--->JDBC API--->JDBC-ODBC--->ODBC API--->ODBC层--->数据源

ADO.NET Data Providers是一组提供访问指定数据源的基本类库。
Provider              API前缀     数据源描述
ODBC Data Provider    Odbc        提供ODBC接口的数据源。一般是比较老的数据库。
OleDb Data Provider   OleDb       提供OleDb接口的数据源,比如Access或Excel。
Oracle Data Provider  Oracle      Oracle数据库
SQL Data Provider     Sql         Microsoft SQL Server数据库
Borland Data Provider Bdp         通用的访问方式能访问许多数据库,比如Interbase、SQL
                                  Server、IBM DB2和Oracle。
这些数据库连接方式ODBC,DAO,RDO,OLE DB,ADO,ADO.NET都是基于oracle客户端(oracle OCI),中间通过SQL*Net与数据库通信。如果为了追求性能,可以自己开发最适合自己数据库连接方式。

libpq 是 PostgreSQL的 C 应用程序员的接口. libpq 是一套允许客户程序向 PostgreSQL 后端服务进程发送查询 并且获得查询返回的库过程. libpq 同时也是其他几个 PostgreSQL 应用接口下面的引擎, 包括 libpq++ (C++), libpgtcl(Tcl),Perl,和 ecpg.

参考:http://blog.csdn.net/wyzxg/article/details/5949424

【JDBC】

开发环境
setup
1、环境设置
设置CLASSPAT
jdbc:postgresql-jdbc4.jar

2、设置语言
java -Duser.language=en TestClass1

3、使用ssl加密(默认情况下SSL使用参数为false)
例:
1)
String url = "jdbc:postgresql://sv1/test";
Properties props = new Properties();
props.setProperty("user","symfo");
props.setProperty("password","secret");
props.setProperty("ssl","true");
Connection conn = DriverManager.getConnection(url, props);

2)
String url = "jdbc:postgresql://sv1/test?user=symfo&password=secret&ssl=true";
Connection conn = DriverManager.getConnection(url);

数据库连接
1、使用DriverManager
1)指定org.postgresql.Driver
2)连接字符串:
jdbc:postgresql://host:port/database?
user=user&password=password1&loginTimeout=loginTimeout&socketTimeout=socketTimeout
选项:
1)host         host;
2)port         端口号,默认为26500;
3)database   数据库名称;
4)user    用户名,默认为运行程序的用户;
5)password   密码;
6)loginTimeout  连接时超时:0~9223372036854775 (秒),指定0,或者不指定表示无限制;
7)socketTimeout  通信超时:0~2147483647(秒),指定0,或者不指定表示无限制。

连接示例:
import java.sql.*;

Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://sv1:26500/mydb?
user=myuser&password=myuser01&loginTimeout=20&socketTimeout=20";
Connection con = DriverManager.getConnection(url);

使用示例:
public String fetchFileByBytes(String path) { 
  String sql = "select * from blob_table"; 
  Connection conn = null; 
  PreparedStatement ps = null; 
  ResultSet rs = null; 
  File file = null;
  OutputStream fos = null;

try { 
    conn = Util.getConn();
    ps = conn.prepareStatement(sql);
    rs = ps.executeQuery();
    byte[] buffer = null;
    file = new File(path);
    fos = new FileOutputStream(file);
    while (rs.next()) {
    buffer = rs.getBytes("file");
    fos.write(buffer);
    }
    fos.flush();
    fos.close();
  } catch (SQLException e) { 
    e.printStackTrace(); 
    return null; 
  } catch (IOException e) { 
    e.printStackTrace(); 
  } finally { 
    Util.close(null, ps, conn); 
  } 
  return null; 
}
参考:http://blog.csdn.net/no_cross_no_crown/article/details/6098222

2、使用PGPoolingDataSource
选项:
1)setDataSourceName   设置数据源名称,存在多个数据源是,名称必须唯一;
2)setServerName       host;
3)setPortNumber       端口号,默认为26500;
4)setDatabaseName  数据库名称;
5)setUser    用户名,默认为运行程序的用户;
6)setPassword   密码;
7)setLoginTimeout  连接时超时:0~9223372036854775 (秒),指定0,或者不指定表示无限制;
8)setSocketTimeout  通信超时:0~2147483647(秒),指定0,或者不指定表示无限制。

示例:
import java.sql.*;
import org.postgresql.ds.PGPoolingDataSource;

PGPoolingDataSource source = new PGPoolingDataSource();
source.setDataSourceName("jdbc/ds1");
source.setServerName("sv1");
source.setPortNumber(26500);
source.setDatabaseName("mydb");
source.setUser("myuser");
source.setPassword("myuser01");
source.setLoginTimeout(20);
source.setSocketTimeout(20);

Connection con = source.getConnection();

参考:
http://i-am-birdman.iteye.com/blog/821743

3、使用PGConnectionPoolDataSourc
选项:
同PGPoolingDataSource。

示例:
import java.sql.*;
import org.postgresql.ds.PGConnectionPoolDataSource;

PGConnectionPoolDataSource source = new PGConnectionPoolDataSource();
source.setServerName("sv1");
source.setPortNumber(26500);
source.setDatabaseName("mydb");
source.setUser("myuser");
source.setPassword("myuser01");
source.setLoginTimeout(20);
source.setSocketTimeout(20);

Connection con = source.getConnection();

4、使用PGXADataSourc
选项:
同PGPoolingDataSource。

示例:
import java.sql.*;
import org.postgresql.xa. ;

PGXADataSource source = new PGXADataSource();
source.setServerName("sv1");
source.setPortNumber(26500);
source.setDatabaseName("mydb");
source.setUser("myuser");
source.setPassword("myuser01");
source.setLoginTimeout(20);
source.setSocketTimeout(20);

Connection con = source.getConnection();

小结
DriverManager与DataSource

DriverManager传统的jdbc连接,通过Class.forName("XXX"),的办法注册之后,就可以DriverManager.getConnection()获得连接了。

DataSource是建立在JNDI服务基础上的,需要application server配置datasource.首先需要注册一个DataSource(一般在/META-INF/context.xml下)然后在web.xml文件中引用这个DataSource,就可以DataSource.getConnection()获得连接。
如:
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/openbase");

DataSource如果在JNDI中注册了数据源对象,将会比起使用DriverManager来具有两个方面的优势:
1、程序不需要像使用DriverManager一样对加载的数据库驱动程序信息进行硬编码,程序员可以选择先在JNDI中注册这个数据源对象,然后在程序中使用一个逻辑名称来引用它,JNDI会自动根据你给出的名称找到与这个名称绑定的DataSource对象。然后就可以使用这个DataSource对象来建立和具体数据库的连接了。

2、使用实现了DataSource接口的类所具有的第二个优势体现在连接池和分布式事务上。连接池通过对连接的复用而不是新建一个物理连接来显著地提高程序的效率。从而适用于任务繁忙、负担繁重的企业级分布式事务。

连接池:
在多层结构的应用程序中通过连接池(connection pooling)技术可以使系统的性能明显得到提到,连接池意味着当应用程序需要调用一个数据库连接的时,数据库相关的接口通过返回一个通过重用数据库连接来代替重新创建一个数据库连接。通过这种方式,应用程序可以减少对数据库连接操作,尤其在多层环境中多个客户端可以通过共享少量的物理数据库连接来满足系统需求。通过连接池技术Java应用程序不仅可以提高系统性能同时也为系统提高了可测量性。

数据库连接池是运行在后台的而且应用程序的编码没有任何的影响。此中状况存在的前提是应用程序必须通过DataSource对象(一个实现javax.sql.DataSource接口的实例)的方式代替原有通过DriverManager类来获得数据库连接的方式。一个实现javax.sql.DataSource接口的类可以支持也可以不支持数据库连接池,但是两者获得数据库连接的代码基本是相同的。

参考:
http://tobylxy.iteye.com/blog/1673421(DriverManager与DataSource的区别以及JDBC测试代码)
http://www.iteye.com/problems/77185
http://blog.sina.com.cn/s/blog_4e57731f0100bfsj.html

【ODBC】(以linux系统为例)
安装驱动:

Linux系统下安装ODBC驱动
1、安装unixODBC;
2、编辑unixODBC的odbcinst.ini,odbcinst.ini文件在unixODBC安装目录/etc/odbcinst.ini;
设置:

1)驱动程序名称
(32位)
如果文字编码是EUC_JP或Shift-JIS,PsqlODBC选择“Symfoware ServerV12.0ansi”;
如果文字编码是UTF-8,PsqlODBC选择“Symfoware ServerV12.0unicode”。
(64位)
如果文字编码是EUC_JP或Shift-JIS,PsqlODBC选择“Symfoware ServerV12.0x64ansi”;
如果文字编码是UTF-8,PsqlODBC选择“Symfoware ServerV12.0x64unicode”。

2)Description
ODBC驱动说明
3)Driver
(32)驱动Path,文字编码为EUC_JP或者Shift-JIS时,Path=/opt/symfoclient32/odbc/lib/psqlodbca.so;
(32)驱动Path,文字编码为UTF-8时,Path=/opt/symfoclient32/odbc/lib/psqlodbcw.so;

4)Driver64
(64)驱动Path,文字编码为EUC_JP或者Shift-JIS时,Path=/opt/symfoclient64/odbc/lib/psqlodbca.so;
(64)驱动Path,文字编码为UTF-8时,Path=/opt/symfoclient64/odbc/lib/psqlodbcw.so;

5)FileUsage:指定为1;

6)Threading:指定为2。

示例
32位LinuxODBC驱动设定
[SymfowareServerV12.0unicode]
Description = Symfoware Server V12.0 unicode driver
Driver = /opt/symfoclient32/odbc/lib/psqlodbcw.so
FileUsage = 1
Threading = 2

注册数据源:
1、注册数据源
在odbc.ini文件中定义数据源,安装目录(unixODBC)/etc/odbc.ini。
选项:
1)数据源名称;
2)Description 说明;
3)Driver    选择与驱动名相同对应的设置,不要改变它的值;
4)Database   指定数据库
5)Servername  host
6)Username  连接用户
7)Password  密码
8)Port   端口
9)SSLmode  加密方式 disable:不使用SSL连接;
      allow:使用SSL连接;
      prefer:连接时优先使用SSL;
      require:必须使用SSL连接。
10)ReadOnly  指定连接是否为只读 1:只读;2:不是只读。

示例:(32位Linux)
[MyDataSource]
Description = SymfowareServer
Driver = SymfowareServerV12.0ansi
Database = db01
Servername = sv1
UserName = symfo
Password = secret
Port = 26500
ReadOnly = No

2、设置环境变量
设置:LD_LIBRARY_PATH
(32位linux bash)
LD_LIBRARY_PATH=/usr/local/lib(※):/opt/symfoclient32/lib:$LD_LIBRARY_PATH;export
LD_LIBRARY_PATH

应用开发

示例:
Linux 32位
gcc -m32 -I /usr/local/include -L /usr/lib(※) -l odbc testproc.c -o testproc

Linux 64位
gcc -m64 -I /usr/local/include -L /usr/lib64(※) -l odbc testproc.c -o testproc

-m32:32位应用程序;
-m64:64位应用程序;
-I:unixODBC驱动安装目录;
-L:unixODBC库所在目录;

注意:(※)表示示例;要使用unixODBC,指定必要的路径。

参考:
http://jingyan.baidu.com/article/8065f87f38b31423312498e4.html(mysql)
http://www.xz7.com/article/18905_1.html

连接数据库(mysql)
string constr = "Dsn=ODBCforMysql";
OdbcConnection conn = new OdbcConnection(constr);
conn.Open();
string sqlstr = "select * from tools.zhanghao";
OdbcCommand cmd = new OdbcCommand(sqlstr, conn);
OdbcDataReader reader = cmd.ExecuteReader();
while (reader.Read()){
 Console.Write(reader.GetString(0) + ", ");
 Console.Write(reader.GetString(1) + ", ");
}
conn.Close();
Console.Read();

参考:
http://jingyan.baidu.com/article/60ccbceb018f4d64cab19787.html

【.NET Data Provider】
setup
Visual Studio(Visual Studio 2010)追加Fujitsu Npgsql .Net Data Provider;
1、Windows程序:【Project】菜单选择【追加选项】,
  Web程序:【Web site】菜单选择【追加选项】;
2、【.NET】Tab【Component】添加Fujitsu Npgsql .Net Data Provider,点击【OK】。

安装アドオン
安装后可以使用TableAdapter,以Npgsql Development Tools for .NET提供。
pgx_ndtregister.exe需要使用管理员权限运行,路径:安装目录\DOTNET\BIN\。
32位アドオン注册:
> pgx_ndtregister.exe -x86

连接数据库
选项:
Server   host;
Port    端口号,默认为26500;
Database   连接数据库名;
User Id   登陆用户名;
Password   登录密码;
Timeout   连接超时时间0~1024(秒),0表示无限制,默认为15秒;
CommandTimeout  通信超时时间0~2147483647(秒),0或负数表示无限制,默认20秒。
。。。

1、使用NpgsqlConnection
using Npgsql;
NpgsqlConnection conn = new NpgsqlConnection("Server=sv1;Port=26500;Database=mydb; User
Id=myuser;Password=myuser01; Timeout=20;CommandTimeout=20;");

2、使用NpgsqlConnectionStringBuilder
using Npgsql;
NpgsqlConnectionStringBuilder sb = new NpgsqlConnectionStringBuilder();
sb.Host = "sv1";
sb.Port = 26500;
sb.Database = "mydb";
sb.UserName = "myuser";
sb.Password = "myuser01";
sb.Timeout = 20;
sb.CommandTimeout = 20;
NpgsqlConnection conn = new NpgsqlConnection(sb.ConnectionString);

3、使用ProviderFactory
using System.Data.Common;
DbProviderFactory factory = DbProviderFactories.GetFactory("Npgsql");
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = "Server=sv1;Port=26500;Database=mydb; User Id=myuser;Password=myuser01;
Timeout=20;CommandTimeout=20;";

【libpq】
libpq是PostgreSQL的C应用程序员的接口.libpq是一套允许客户程序向PostgreSQL后端服务进程发送查询并且获得查询返回的库过程.libpq同时也是其他几个PostgreSQL应用接口下面的引擎,包括libpq++(C++),libpgtcl(Tcl),Perl,和ecpg。

安装:
libpq,它与PostgreSQL源码树绑定在一起。如果安装数据库系统时使用的是二进制文件而不是从源码编译安装,libpq可被单独安装,但也要记得需要使用选项-dev package。

编译:
在C程序文件中,包含libpq-fe.h头文件并在编译时添加相应的链接标记-lpq。

连接数据库:
选项:
host     主机;
hostaddr    主机IP地址;
port     主机服务器的端口号;
dbname     数据库名;
user     连接用户名;
password    密码;
connect_timeout  给连接过程设置的时间范围,以秒计。零或者不设置表示无穷;
options     发给后端的跟踪/调试选项;
tty     文件或控制台(tty),用于从后端的可选调试输出;
requiressl    设为‘1‘要求与后端进行SSL联接,设置为‘0‘(缺省)与服务器进行协商。

(使用hostaddr取代host可以让应用避免一次主机名查找,这一点对于那些有时间约束的应用来说可能是非常重要的。不过,Kerberos认证系统要求主机(host)名。);

1、PQconnectdb与后端数据库服务器建立一个新的联接.
  PGconn *PQconnectdb(const char *conninfo)

这个过程用从一个字符串conninfo来的参数与数据库打开一个新的联接.与下面的PQsetdbLogin()不同的是,我们可以不必更换函数签名(名字)就可以扩展参数集,所以我们建议应用程序中使用这个函数或者是它的非阻塞的相似函数PQconnectStart和PQconnectPoll,传入的参数可以为空,表明使用所有缺省的参数,或者可以包含一个或更多个用空白间隔的参数设置。

2、PQsetdbLogin与后端数据库服务器建立一个新的联接。这个函数是PQconnectdb前身,它有固定个数的参数,但是有相同的功能。

3、PQsetdb与后端数据库服务器建立一个新的联接。这是一个调用PQsetdbLogin()的宏,只是login和pwd参数用空(null )代替,提供这个函数主要是为了与老版本的程序兼容。

4、PQconnectStart, PQconnectPoll 与数据库服务器建立一次非阻塞的联接。
  PGconn *PQconnectStart(const char *conninfo)
  PostgreSQLPollingStatusType PQconnectPoll(PGconn *conn)

这两个过程用于打开一个与数据库服务器之间的非阻塞的联接,应用的执行线索在执行它的时候不会因远端的I/O而阻塞,不过有一些条件:
1)必须正确提供hostaddr和host参数以确保不会发生正向或者反向的名字查找;
2)如果你调用了PQtrace,确保跟踪进入的流对象不会阻塞;
3)你必须在调用PQconnectPoll之前确保socket处于正确的状态。

开始联接,调用conn=PQconnectStart("connection_info_string"),如果conn是NULL,表明libpq无法分配一个新的PGconn结构。否则,返回一个有效的PGconn指针。PQconnectStart一返回,调用status=PQstatus(conn)。如果status等于CONNECTION_BAD,PQconnectStart失败。

5、PQconndefaults返回缺省的联接选项。返回联接选项结构的地址。

6、PQfinish关闭与后端的联接,同时释放被PGconn对象使用的存储器。
  void PQfinish(PGconn *conn)

注意:即使与后端的联接尝试失败(可由PQstatus判断),应用也要调用PQfinish释放被PGconn对象使用的存储器,不应该在调用PQfinish后再使用PGconn指针。

7、PQreset重置与后端的通讯端口。
  void PQreset(PGconn *conn)

8、PQresetStart PQresetPoll以非阻塞模式重置与后端的通讯端口。
  int PQresetStart(PGconn *conn);
  PostgreSQLPollingStatusType PQresetPoll(PGconn *conn);
此函数将关闭与后端的联接并且试图与同一个服务器重建新的联接,使用所有前面使用过的参数。如果它返回 0,那么重置失败。如果返回1,用与使用PQconnectPoll建立联接的同样的方法使用PQresetPoll重置联接。

9、PQdb返回联接的数据库名。
  char *PQdb(const PGconn *conn)
 申明为const类型,这个值在PGconn对象的生存期内是固定的(下同)。

10、PQuser返回联接的用户名。
char *PQuser(const PGconn *conn)

11、PQpass返回联接的口令。
char *PQpass(const PGconn *conn)

12、PQhost返回联接的服务器主机名。
char *PQhost(const PGconn *conn)

13、PQport返回联接的端口号。
char *PQport(const PGconn *conn)

14、PQtty返回联接的调试控制台(tty)。
char *PQtty(const PGconn *conn)

15、PQoptions返回联接中使用的后端选项。
char *PQoptions(const PGconn *conn)

16、PQstatus返回联接的状态。
ConnStatusType PQstatus(const PGconn *conn)

17、PQerrorMessage返回联接中操作产生的最近的错误信息。
char *PQerrorMessage(const PGconn* conn);

18、PQbackendPID返回控制此联接的后端服务器的进程号ID。
int PQbackendPID(const PGconn *conn);

19、PQgetssl返回联接使用的SSL结构,或者如果SSL没有使用的话返回NULL。
SSL *PQgetssl(const PGconn *conn);

示例:
#include <stdio.h> 
#include <libpq-fe.h>

int main(int argc,char* argv[]){
 const char *conninfo;
 PGconn *conn;
 if (argc > 1)
     conninfo = argcv[1];
 else
 {
     printf("Not enough arguments, exiting...");
     return 1;
 }
    conn = PQconnectdb(conninfo);
    /*Check to see how I did */
    if(PQstatus(conn) == CONNECTION_OK)
        printf("Connection succeeded.\n");
    else
    {
        printf("Connection failed.\n");
    }
}
编译后运行:
$ testlibpg "hostaddr=127.0.0.1 user=postgres dbname=testdb1"
如果成功显示:“Connection succeeded.”。

其他示例程序:
http://www1.phpchina.com/resource/manual/PostgreSQL/libpq-example.html

参考:
http://tanhp.com/index.php/archives/208/
http://www1.phpchina.com/resource/manual/PostgreSQL/libpq.html#LIBPQ-INTRO
http://blog.csdn.net/freeboy1015/article/details/9307993

时间: 2024-10-12 00:37:53

【symfoware OPEN】数据库应用开发的相关文章

Oracle数据库之开发PL/SQL子程序和包

Oracle数据库之开发PL/SQL子程序和包 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后

数据库设计开发规范

1 数据库命名约定  1.1 规则 (1) 命名富有意义英文词汇,多个单词组成的,中间以下划线分割. (2) 除数据库名称长度为1-8个字符,其余为1-30个字符,dblink名称也不要超过30个字符. (3)命名只能使用英文字母,数字和下划线,字母全部小写 (4)避免使用Oracle的保留字如level.关键字如type. 1. 2系统模块 编号 名称 英文 缩写 1 系统管理 system sys 2 配置管理 dictionary dic 3 设备系统 equipment equ 4 通讯

Ubuntu下sqlite3的配置与使用(以后会说到Ubuntu下C++数据库应用开发程序(窗体程序))

/***************************************************************  * Name:      CaculatorMain.h  * Purpose:   Defines Application Frame  * Author:    zhangaihua ([email protected])  * Created:   2013-12-25  * Copyright: zhangaihua (http://blog.csdn.ne

数据库引擎开发以及常见数据库内部原理学习(1)

数据库引擎开发 学习王涛老师的数据库引擎课程已经是很久之前的事情了,限于当时自身的能力,特别是对数据库的理解方面的欠缺,当时可以说是囫囵吞般的学习,尽管如此,当时学习的收获依旧非常之大,而时至今日,自认为自身对数据库的理解更上一层楼,也因为相对复杂多变的现代数据库,这个数据库模型相对于其他数据库来说简单得多,所以重新翻出来,再次学习,试图在源码层面理清楚各种数据库的架构! 因为是笔记类型的博文,所以会不断更新. 线索 数据库发展 关系型数据库理论 NoSQL数据库的介绍 1.记录: 谈谈数据库的

mysql数据库设计开发规范

1.设计 1. 一般都使用INNODB存储引擎,除非读写比率<1%,才考虑使用MYISAM存储引擎:其他存储引擎请在DBA的建议下使用. 2. Stored procedure (包括存储过程,函数,触发器)对于MYSQL来说还不是很成熟,没有完善的出错记录处理,不建议使用. 3. UUID(),USER()这样的MYSQL INSIDE函数对于复制来说是很危险的,会导致主备数据.不一致.所以请不要使用.如果一定要使用UUID作为主键,让应用程序来产生. 4. 请不要使用外键约束,如果数据存在外

php服务器开发之 app客户端首页接口开发(一) 概述及方案一:读取数据库方式开发首页接口

本篇博文主要内容:1.简述app客户端首页接口开发的三种方案 2.实例讲解 方案一:读取数据库方式开发首页接口 /**********************************************************************************************************************************/ 方案一:读取数据库方式开发首页接口 1.从数据库获取消息 2.封装数据 3.生成接口数据 适用场景: 数据时效性高的系统

JavaWeb数据库应用开发基础

JavaWeb数据库应用JavaWeb数据库应用开发的几种方式一.JSP+JDBC二.JSP+Servlet(+JDBC)三.JSP+Servlet+DAO(+JDBC)四.JSP+Servlet+DAO(+JDBC)+JavaBeanJavaWeb数据库应用开发的几种方式以下总结了课程中学习的四种JavaWeb数据库应用开发方式,其中第前两种适合业务逻辑和功能简单的系统:后两种则是经典的MVC开发模式,推荐大家主要采用这种方式.此外,在有一定基础后可以学习使用主流开发框架,如Spring等,开

安卓项目-利用Sqlite数据库,开发新闻发布系统

本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基于上篇文章基础之上进行深入学习的.程序员带你学习安卓开发-XML文档的创建与解析 Sqlite数据库: Sqlite数据库是在安卓中使用较广泛的数据库.其为简单.轻巧的Sql类文件型数据库.因以简单的文本形式保存,所以安全性不是很高.只要拿到sqlite数据库文件就可以得到数据.所以这就决定了sql

数据库引擎开发以及常见数据库内部原理学习(3):网络编程基础

康奈尔笔记 线索 网络理论                                                                                 程序流程 1.记录: 网络原理 计算机网路是一种允许计算机进行即时通讯的工具 计算机物理连接可能是电缆也可能是无线介质 生成.转发以及销毁数据的网络设备称之为网络节点 OSI模型 国际标准协议OSI模型是一种字面模型,而且跟IP协议没关系 第一层:物理层:bit流传输,主要是物理介质 第二层:数据链路层:提供介