当前位置:首页 » 操作系统 » 动态数据库

动态数据库

发布时间: 2022-01-15 18:42:18

⑴ 如何在数据库动态建表

动态建表首先需要了解Statement类
Statement 对象用 Connection 的方法createStatement 创建,例如
//创建连接对象
Connection connection = DBUtil.getConnection();
//创建Statement对象
Statement statement=connection.createStatement();
创建完之后通过执行以sql语句为参数的Statement的方法,来执行sql语句完成对数据库的操作。
Statement共有三种方法,分别是 executeQuery、executeUpdate 和execute。
方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。
方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。如果没有进行操作就返回-1。
方法 execute用于执行返回多个结果集、多个更新计数或二者组合的语句,我们不会需要该高级功能,所以本概述就不进行介绍了。
动态建表实例:
String tablename="WrongExpression";
sql = "create table "+tablename+"(time varchar(255),expression varchar(20),result varchar(20))";
int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功

⑵ 动态数据库的什么是动态链接库

动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序)。
动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 文件中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。
使用动态链接库可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您有一个大型网络游戏,如果把整个数百MB甚至数GB的游戏的代码都放在一个应用程序里,日后的修改工作将会十分费时,而如果把不同功能的代码分别放在数个动态链接库中,您无需重新生成或安装整个程序就可以应用更新。

⑶ 动态数据库

动态连接库,英文全称是Dynamic Link Library (DLL),它是Microsoft Windows 和 OS/2的一个特性,它把一般用于特殊函数或函数集的可执行程序单独作为文件存放(扩展名为DLL),只在程序装入时或者在运行时与程序结合,而不是在程序编译连接时,从而可以同时被若干应用程序共享。

⑷ 在.NET 中怎么动态连接不同数据库

应用工厂模式.把数据库联接作接口.再用点反射
给一小段代码参考
public DbDriver()
{
// 获取程序集名称
assemblyName = ConfigurationManager.AppSettings["AssemblyName"];
// 获取默认构造器名称
constructor = ConfigurationManager.AppSettings["Constructor"];
}
public IDataTask DriveLWordTask()
{
// 建立 IDataTask 对象实例
return (IDataTask)Assembly.Load(assemblyName).CreateInstance(constructor, false);
}
assemblyName是某种具体数据库连接方式的程序集名.改变配置中的程序集名即得到不同的连接方式,不明白就先看下工厂模式

⑸ 一个动态的网站怎么建后台数据库怎么弄

网站前台和网站后台是网站建设中常问道的一个问题,这两个概念通常是相对于动态网站而言,即网站建设是基于数据库开发的网站。

基于带数据库开发的网站,一般分网站前台和网站后台,网站前台是面向网站访问用户的,通俗的说也就是给访问网站的人看的内容和页面,网站前台访问可以浏览公开发布的内容,如产品信息、新闻信息、企业介绍、企业联系方式、提交留言等操作,管理可以通过密码进到后台的网页,来发布新闻、查看留言等操作。

网站后台,有时也称为网站管理后台,是指用于管理网站前台的一系列操作,如:产品、企业信息的增加、更新、删除等。通过网站管理后台,可以有效的管理网站供浏览者查阅的信息。网站的后台通常需要帐号及密码等信息的登陆验证,登陆信息正确则验证而后进入网站后台的管理界面进行相关的一系列操作。

当然,前台和后台都是程序人员做的开发的网站页面,通常开发带网站管理后台功能的网站空间必须支持程序语言和数据开发功能。

具体设计到 编程语言 和 数据库 这两方面的具体知识不是文字解答这么简单的。你需要去书店,买相关的教程书来学习一个足够久的时间才能解决了。

⑹ 如何设计动态字段的产品数据库表

可以采用四种技术:

动态增加数据库表字段
预留足够的空白字段,运行时作动态影射
用xml格式保存在单字段里
改列为行,用另外一个表存放定制字段

【一】

现在我们来分析一下四种技术的优劣,不过首先可以排除的是第一点动态增加字段的方法,因为在实际操作时候几乎是不可能的(sqlserver太慢,oracle索性不支持),基本可以不讨论就排除。剩下后三点。

【二】

先来讨论预留空白字段的方法,基本原理就是在数据库表设计的时候加入一些多余的字段,看下面的代码:

CREATE TABLE Sample(
name varchar(12),
field0 varchar(1),
field1 varchar(1),
fieldN varchar(1)
}

然后看实际运行时候的需要,动态分配字段给系统使用,也许需要一个这样的结构来描述分配情况:

public class Available
{
public int CurrentUnusedFieldNumber;
public Hashtable FieldToRealName;
}

也许某一时刻的数据状况是这样的: CurrentUnusedFieldNumber=3,
哈西表FieldToRealName包含内容是("field0"="SomeId", "field1"="AnyName",
"field2=IsOk")
现在的问题是如果要配合Hibernate,如何来处理?以上段的数据使用状况为例子,如果我们的类定义是这样:
public class Entity01
{
public string Name;
public string SomeId;
public string AnyName;
public bool IsOk;
}

也许只需要修改一下xxx.hbm.xml,把 SomeId 和 field0
做成对应就ok了。但是在运行时我们怎么知道会有这样的类定义?除非我们做动态代码生成,自动编译也许可以,但是问题也许就到其他方面去了;如果我们不用动态定义,那么类就只能是这样:
public class Entity01
{
public string Name;
public Hashtable ExtraFieldAndValues;
}

使用的时候,用 entity01.ExtraFieldAndValues.setValue("AnyName", "boss")
的方式来引用,也许这样是修改最少的了,但是问题是Hibernate不支持这样的方法。

【三】
再来讨论单字段存储的方法,我们使用这样的数据库表定义
CREATE TABLE Sample
(
Name varchar(12),
Xml CLOB(102400) // 仅作说明而已
)

然后对应这样的类定义
public class Entity01
{
public string Name;
public string Xml;
public Hashtable ExtraNameAndValueFromXml;
}

我们的代码就可以这样使用:string id =
entity01.ExtraNameAndValueFromXml.getValue("SomeId")
了。这样解决看起来很不错,不仅不需要Available表,而且看起来Hibernate对它的支持也很完美,但是致命的问题在于:如果保持高效的查询?除非数据库系统本身对此有支持,否则就只能用低效的substring或者like做查询,这在大批量数据中根本就不可行。
是不是折衷一下,把两种方法的优点和起来?问题有来了:怎么保持两者之间数据的同步?难道要我们用存储过程去解析xml内容?
所以,一个两难的问题,需要我们认真去解决。我们通过认真的需求分析,也许可以减少可变字段的数量,但是只要有一个可变字段或者可变的可能性存在,我们始终要去解决这个两难的问题。
期待继续讨论。

【四】
还有一种方法就是改列为行,用另外一个表存放扩展字段,定义可以如下:
CREATE
TABLE SampleFields
(
idSample Integer,
fieldName varchar(30),
fieldValue varchar(100)
)
其中idSample关联到Sample表的id字段(我没有写出来)。这样的话,Hibernate很容易支持,也可以支持Sql的查询,而且可以支持把内容放到Hashtable中去,看起来是目前最好的方式了。但是在大容量数据的时候,SampleFields表的数据会是主表数据量的N倍(看定制的字段数目多少而定),同样存在有很严重的性能问题。

⑺ 动态网页怎样连接数据库

这个问题问的太宽泛

jdbc, hibernate都可以啊 hibernate也是封装了jdbc的 用起来更方便点

随便贴个jdbc连接SQL的例子吧

JSP连接SQL Server7.0/2000数据库
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="Java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.JDBC.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";

Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();

%>
</body>
</html>

⑻ 什么是动态数据库

DLL文件格式的就是

⑼ SQL 怎么USE 动态数据库

数据库中可能存在多个Database,如默认的model,master等 在图形化查询界面中,你可以在快捷菜单栏中选择要操作的数据库,也可以使用命令进行操作 楼上的yiyishuitian已经给出了答案 举个栗子: use master; go select * from dbo.spt_values;

⑽ 为什么不能与动态数据库连接

//动态库和普通进程调用数据库方式没有任何区别,以下的程序兼容WINDOWS ODBC数据库连接和LINUX MYSQL连接,是跨平台的。
#ifdef WIN32
#include <windows.h>
#include <odbcinst.h>
#include <sqlext.h>
#else
#include <mysql.h>
#include <unistd.h>
#define SQLHANDLE static MYSQL
#endif
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

SQLHANDLE hDBEnv, hDBC;

int DB_Open(char * dbcn, char * usr, char * pwd)
{
int r;
#ifdef WIN32
r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hDBEnv);
if(r) return 0;
r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,0);
if(r) return 0;
r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, &hDBC);
if(r) return 0;
r = SQLConnect(hDBC,
(unsigned char *)dbcn, strlen(dbcn),
(unsigned char *)usr, strlen(usr),
(unsigned char *)pwd, strlen(pwd));
return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;
#else
mysql_init(&hDBC);
MYSQL * rx = mysql_real_connect(
&hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);
if(!rx) return 0;
return 1;
#endif
}//end DB_Open

int DB_Exec(char * sql)
{
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));
SQLCloseCursor(hStatement);
SQLFreeHandle(SQL_HANDLE_STMT, hStatement);
hStatement = NULL;
#else
mysql_real_query (&hDBC, sql, strlen(sql));
#endif
return 1;
}//end DB_Exec

int DB_Close(void)
{
#ifdef WIN32
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);
#else
mysql_close(&hDBC);
#endif
return 1;
}//DB_Close()

#ifndef WIN32
typedef struct tagMySQLRecordset {
MYSQL_RES * hRecord;
void * * row;
int * size;
int cols;
} MYSQLRecordset;

热点内容
centosphp版本 发布:2024-12-26 23:11:59 浏览:71
安卓机怎么关闭主题 发布:2024-12-26 21:55:57 浏览:915
javafor线程 发布:2024-12-26 21:54:35 浏览:744
python自定义模块 发布:2024-12-26 21:41:37 浏览:57
linux安装mysqltar 发布:2024-12-26 21:18:02 浏览:315
浏览器的java支持 发布:2024-12-26 21:15:45 浏览:655
电商高管如何配置 发布:2024-12-26 21:13:48 浏览:709
批发的算法 发布:2024-12-26 21:13:46 浏览:208
安卓手机在日本下载哪个导航 发布:2024-12-26 21:09:32 浏览:560
白噪声加密 发布:2024-12-26 20:31:02 浏览:641