Delphi中嵌入的数据库应用开发工具如Database Form Expert具有很强大的功能 我们不需要编写任何程序代码便可以快速地创建一个简单的数据库应用程序 甚至还能创建基于多个数据库表的主要──明细型数据库应用程序
本章主要介绍用Delphi开发简单的数据库应用程序的一般方法和步骤 首先让读者对Delphi强劲的数据库应用开发工具有一个直观的印象 然后在此基础上进行复杂的数据库应用程序的设计 本章主要包括以下内容
● 创建数据库应用窗体
包括用Database Form Expert 或手工方式创建简单的无需编写程序代码的应用程序或者利用多个部件并编写功能复杂的程序代码创建主要──明细型数据库应用程序
● 在应用程序中控制字段有关的属性
描述怎样读写数据库表中字段的值和控制字段的显示格式等
本章所介绍的例子中用到的窗体 数据库表以及相关的文件都是在安装Delphi时缺省安装在C:\DELPHI\DEMOS\DB\MASTAPP目录中 并且用别名DBDEMOS表示这一子目录 在本章例子中 除特殊声明外 所有的TTable和 TQuery 部件的 DatabaseName 属性都设置为DBDEMOS
简单的基于单表的据库应用
用Decphi创建显示一个数据库表中的内容的应用非常简单和方便 只需要三个部件 只要将这三个部件通过相关的属性相互联系起来 不需要编写任何程序代码便可以实现 例如 用户想查看数据库表Customer DB中的内容时 可以按下面步骤来实现
选择相关的部件
选择菜单Project/New开始一个新工程 并修改Form 的Caption属性为CustomerFrom 并把Name属性设置为CustomerForm 然后从部件选择板上的Data Access 页上选取一个Datasounce部件和一个Table部件放到窗体的左上角 它们是非可见的部件 在窗体中我们看到的只是部件的图标 从Data Control页上选取DBGrid部件放到窗体中前两个部件的下面 完成这些工作之后 窗体如图 所示
图在CustomerFrom 窗体中放置三个部件
设置部件的属性
为了使TDBGrid部件能够显示数据库表Customer DB中的客户信息 我们必须修改窗体三个部件相关的属性 这些属性的设置如表 所示
表 CustomerFrom 窗体中三个部件的属性设置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
属 性 属 性 值
──────────────────────────────
DataSource AutoEdit False
DataSource DataSet Table
Table DatabaseName DBDEMOS
Table TableName CUSTOMER DB
Table Active True
DBGrid DataSource DataSource
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这里要注意的是 DBDEMOS是Delphi缺省安装时C:\Delphi\DEMO\DB\MASTAPP目录的别名 而且数据库表Customer DB存在该目录下 用户在使用这一例子时 请注意这两项设置都是正确的 另外 Datasource Dataset Table TableName和DBGrid Datasource属性都有下拉式列表框允许用户从可能的值列表中选择它们的值 这样能方便我们进行属性的设置 而且不容易出错
Datasouuce AutoEdit属性设置为False是为了防止用户修改数据库表中的数据 在下面的讨论中我们将详细地进行说明
Table Active设置为True时 Delphi会打开Table TableName所指定的数据库表 如果这个数据库表不存在(或表中什么也没有 即空表) Delphi 会d出出错信息并且Table Active变成False 当Table Active被设置成True之后 Table 部件的一些属性就不能再修改了 如Table DatabaseName和Table Tablename属性 若要修改它们 必须首先要将Table Active属性设置为False 然后再进行修改 否则 Delphi会d出错误信息 Cannot perform this operation on an open database 当看到这个错误信息时 只需把Table Active置成False 完成相关的修改后 再把 Table Active 属性设置为True
当我们把DBGrid DataSource的值设置成DataSource 时 Delphi会把Customer DB中的数据填充到DBGrid 部件中 并且可以用DBGrid 中的滚动条来浏览数据库表中的所有记录
运行程序
保存文件 命名代码单元为Cust pas 命名工程名为CustPRJ DPR 然后按F 编译并运行程序 程序执行之后 我们可以使用滚动条或键盘移动键在字段和记录间移动 但不能修改表中的数据 因为Datasouc AutoEdit 属性已被设置为False
Cust程序中的三个部件都有各自的特殊用途 三个部件的相关属性在内部相互联系生成最终的应用程序 TTable部件连接磁盘上的实际数据库表和应用程序中其他部件的通道 TTable部件具有打开和关闭 读取 更新以及其他处理磁盘数据库文件的方法
TDatasource部件是连接TTable部件和数据浏览部件如TDBGrid部件的桥梁 TDBGrid部件用于显示数据库表中的数据信息 它为应用程序提供一个直观的界面 图 阐述了这三个部件之间的关系
Cust程序中三个部件之间的内部关系
TDBGrid 部件的奇妙之处在于它知道如何去获取数据库表中的下一条或前一条记录 我们使用滚动条或箭头键便可以完成这项任务 TDBGrid部件不知道如何增加 删除和修改记录 如果想让 Cust 程序能够修改数据库表中的记录 只要把 Datasource 部件的AutoEdit属性设置成True 并重新编译和运行程序就可以达到目的 使用箭头键 把DBGrid的高亮度条定位到某一个字段上 然后键入新值 该字段中的值将被键入的新值所取代 并且当移动到另一条记录时 健入的信息会自动写入数据库表中 如果想放弃所做的改动 只需在离开该字段前按一下Escape键
如果想在表中增加新记录 可以把高亮度条移到网格底端的空白记录上并输入新记录的有关字段值 也可以在用户指定的某一条记录的后面插入一条新记录 只要把高亮度条定位到指定的记录上 按Ins键 使可以在该记录的后面插入新记录
删除某一条记录时 把高亮度条定位在想删除的记录的任何字段上 按Ctrl+ del键 这时会出现保护信息 我们可以确认是否真的想删除该项记录
TDBGrid为用户提供了较完备的功能 用于控制是否编辑 增加或删除记录 若想禁止对数据库表作任何修改 设置TDBGrid部件的Readonly属性为 True 并设置 Option dgEDiting为False(这将为我们提供一个只读的数据库表浏览器而不是数据库编辑器 但它隐含着增加 编辑和删除记录的能力) TDBGrid部件的这些属性和Option属性其它选项的各种不同组合可以让我们很方便地对数据库表进行有效的浏览 编辑等 *** 作
如果我们经常使用像电子表格那样的界面来显示和编辑数据记录 TDBGrid 部件便是一个很方便的工具 但那并不是最友好的用户界面 如果想拥有更优美更直观的界面 我们还可以使用单独的数据浏览部件来显示数据库表中各个字段的值 并利用TDBNavigator部件控制对数据库表的存取
lishixinzhi/Article/program/Delphi/201311/25173
(1)把mysql的驱动放到tomcat的lib中
(2)建一个很简单的表person就两个字段username和password,数据库名和数据库密码换成你的就是了
create database ibatis;--创建数据库
use ibatis;--使用数据库,以下表在该数据库中
create table person(username varchar(20),password varchar(20));--创建person表
(3)创建indexjsp和registjsp
1:
indexjsp 提交表单页面
<%@ page pageEncoding="GBK"%>
<html>
<head>
</head>
<body>
<form action="registjsp" method="post">
username :<input type = "text" name="name"/>
password :<input type = "password" name="password"/>
<input type = "submit" value="提交"/>
</form>
</body>
</html>
2:registjsp //用户注册同时显示所有用户
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="javasql"%>
<body>
<center>
<%
requestsetCharacterEncoding("GBK");
String uname=requestgetParameter("name"); //从表单获得
String pwd=requestgetParameter("password"); //从表单获得
String driver="commysqljdbcDriver"; //我用的是mysql官方驱动你自己换一下就是了 在这里有
String url="jdbc:mysql://localhost:3306/ibatisuser=root&password=yanghao"; //这是数据库连接地址Ibatis是数据库名称,user是用户password就是你的用户名,根据实际情况你修改
String sql="INSERT INTO person (username,password) VALUES('"+uname+"','"+pwd+"')"; //把indexjsp提交的两个数据插进数据库的数据库语句
Connection conn=null; //数据库连接
Statement stmt=null;
ResultSet rs = null; //查询结果
%>
<%
ClassforName(driver); //加载驱动
conn=DriverManagergetConnection(url); //获得连接
stmt=conncreateStatement();
stmtexecute(sql);//存入数据库
rs=stmtexecuteQuery("select from person"); //查询所有person语句
%>
<%
if(rs!=null){ //判断以下
while(rsnext()){
String username=rsgetString(1);
String password=rsgetString(2);
%>
<table>
<tr>
<td><%=username %></td>
<td><%=password %></td>
</tr>
</table>
<%
//关闭数据库连接,和开始的顺序是反的
rsclose();//关闭结果集
stmtclose();//关闭Statement
connclose();//关闭数据库连接
//ok完成了插入和查询 *** 作
}
}
%>
</center>
</body>
这也是我从网上找了一个例子,大概流程就是这样,慢慢来。
可以在电脑安装一个MySQL数据库,MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。
下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下!打开下载的mysql安装文件mysql-5027-win32zip,双击解压缩,运行“setupexe”,出现如下界面
mysql安装图文教程1
mysql安装向导启动,按“Next”继续
mysql图文安装教程2
选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程:
mysql图文安装教程3
在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(mysql服务器)”、“Client Programs(mysql客户端程序)”、“Documentation(文档)”也如此 *** 作,以保证安装所有文件。点选“Change”,手动指定安装目录。
mysql图文安装教程4
填上安装目录,我的是“F:\Server\MySQL\MySQL Server 50”,也建议不要放在与 *** 作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。
mysql图文安装教程5
返回刚才的界面,按“Next”继续
mysql图文安装教程6
确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
mysql图文安装教程7
正在安装中,请稍候,直到出现下面的界面
mysql图文安装教程8
这里是询问你是否要注册一个mysqlcom的账号,或是使用已有的账号登陆mysqlcom,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。
mysql图文安装教程9
现在软件安装完成了,出现上面的界面,这里有一个很好的功能,mysql配置向导,不用向以前一样,自己手动乱七八糟的配置myini了,将 “Configure the Mysql Server now”前面的勾打上,点“Finish”结束软件的安装并启动mysql配置向导。
mysql图文安装教程10
mysql配置向导启动界面,按“Next”继续
mysql图文安装教程11
选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
mysql图文安装教程12
选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”,大家根据自己的类型选择了,一般选“Server Machine”,不会太少,也不会占满。
mysql图文安装教程13
选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),随自己的用途而选择了,我这里选择“Transactional Database Only”,按“Next”继续。
mysql图文安装教程14
对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续
mysql图文安装教程15
选择您的网站的一般mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,我这里选“Online Transaction Processing(OLTP)”,自己的服务器,应该够用了,按“Next”继续
mysql图文安装教程16
是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果您还是个新手,我建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续
mysql图文安装教程17
西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然后在Character Set那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字、和其它乱七八糟的字——使用mysql的时候,在执行数据 *** 作命令之前运行一次“SET NAMES GBK;”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。按 “Next”继续。
mysql图文安装教程18
选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysqlexe -uusername -ppassword;”就可以了,不用指出mysqlexe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysqlexe -uusername -ppassword;”就可以了,不用指出mysqlexe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。
mysql图文安装教程19
这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。 “Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能 *** 作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
mysql图文安装教程20
确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。
设置完毕,按“Finish”结束mysql的安装与配置——这里有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的 *** 作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
H2数据库是开源的,非常适合做嵌入式数据库使用,尤其用java编码的时候。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、h2提供了一个十分方便的web控制台用于 *** 作和管理数据库内容。
把下面这段代码放在一个Class里面,同时修改相应的连接串和表名称表字段,就可以实现增加删除修改查询四个功能:
------------------------------在webconfig中
<connectionStrings>
<add name="Northwind" connectionString="Data Source=1921681100;Initial Catalog=Northwind;User ID=sa;PassWord=sa" providerName="SystemDataSqlClient"/>
</connectionStrings>
---------------------------在C#中调用:
String ConnectionString = SystemConfigurationConfigurationManagerConnectionStrings["Northwind"]ConnectionString
-----------------------------增删改查方法:
public int New(EntitiesAmmeter obj)
{
String sql = "insert into Ammeter(AmmeterName,AmmeterNO,AmmeterTypeObjID,ApartmentObjID,BHNO,IsUsed,Multiplicator,ObjectID,ParentID,RealtyObjID,System) values(@AmmeterName,@AmmeterNO,@AmmeterTypeObjID,@ApartmentObjID,@BHNO,@IsUsed,@Multiplicator,@ObjectID,@ParentID,@RealtyObjID,@System)";
SqlConnection cn = new SqlConnection(this_ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmdParametersAddWithValue("@AmmeterName", objAmmeterName);
cmdParametersAddWithValue("@AmmeterNO", objAmmeterNO);
cmdParametersAddWithValue("@AmmeterTypeObjID", objAmmeterTypeObjID);
cmdParametersAddWithValue("@ApartmentObjID", objApartmentObjID);
cmdParametersAddWithValue("@BHNO", objBHNO);
cmdParametersAddWithValue("@IsUsed", objIsUsed);
cmdParametersAddWithValue("@Multiplicator", objMultiplicator);
cmdParametersAddWithValue("@ObjectID",
StringEmptyEquals(objObjectID) SystemGuidNewGuid()ToString() : objObjectID);
cmdParametersAddWithValue("@ParentID", objParentID);
cmdParametersAddWithValue("@RealtyObjID", objRealtyObjID);
cmdParametersAddWithValue("@System", objSystem);
try
{
if (cnState != ConnectionStateOpen)
cnOpen();
return cmdExecuteNonQuery();
}
catch
{
return -1;
}
finally
{
if (cnState != ConnectionStateClosed)
cnClose();
}
}
public int Update(EntitiesAmmeter obj)
{
String sql = "Update Ammeter Set AmmeterName=@AmmeterName,AmmeterNO=@AmmeterNO,AmmeterTypeObjID=@AmmeterTypeObjID,ApartmentObjID=@ApartmentObjID,BHNO=@BHNO,IsUsed=@IsUsed,Multiplicator=@Multiplicator,ParentID=@ParentID,RealtyObjID=@RealtyObjID,System=@System Where ObjectID=@ObjectID";
SqlConnection cn = new SqlConnection(this_ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmdParametersAddWithValue("@AmmeterName", objAmmeterName);
cmdParametersAddWithValue("@AmmeterNO", objAmmeterNO);
cmdParametersAddWithValue("@AmmeterTypeObjID", objAmmeterTypeObjID);
cmdParametersAddWithValue("@ApartmentObjID", objApartmentObjID);
cmdParametersAddWithValue("@BHNO", objBHNO);
cmdParametersAddWithValue("@IsUsed", objIsUsed);
cmdParametersAddWithValue("@Multiplicator", objMultiplicator);
cmdParametersAddWithValue("@ObjectID", objObjectID);
cmdParametersAddWithValue("@ParentID", objParentID);
cmdParametersAddWithValue("@RealtyObjID", objRealtyObjID);
cmdParametersAddWithValue("@System", objSystem);
try
{
if (cnState != ConnectionStateOpen)
cnOpen();
return cmdExecuteNonQuery();
}
catch
{
return -1;
}
finally
{
if (cnState != ConnectionStateClosed)
cnClose();
}
}
public int Del(EntitiesAmmeter obj)
{
String sql = "delete from Ammeter Where ObjectID=@ObjectID";
SqlConnection cn = new SqlConnection(this_ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmdParametersAddWithValue("@ObjectID", objObjectID);
try
{
if (cnState != ConnectionStateOpen)
cnOpen();
return cmdExecuteNonQuery();
}
catch
{
return -1;
}
finally
{
if (cnState != ConnectionStateClosed)
cnClose();
}
}
public int Del(String where)
{
String sql = StringFormat("delete from Ammeter Where {0}", whereToLower()Replace("update", "")Replace("delete", ""));
SqlConnection cn = new SqlConnection(this_ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
try
{
if (cnState != ConnectionStateOpen)
cnOpen();
return cmdExecuteNonQuery();
}
catch
{
return -1;
}
finally
{
if (cnState != ConnectionStateClosed)
cnClose();
}
}
public DataTable Query(String pkField, Object pkid)
{
String sql = StringFormat("select from Ammeter Where {0}='{1}'", pkFieldToLower()Replace("update", "")Replace("delete", "")Replace("insert", "")Replace(";", "")Replace("--", "")Replace("exec", ""), pkidToString()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();
daFill(dt);
return dt;
}
catch
{
return null;
}
}
public DataTable Query(String where)
{
String sql = StringFormat("select from Ammeter Where {0}", whereToLower()Replace("update", "")Replace("delete", "")Replace("insert", "")Replace(";", "")Replace("--", "")Replace("exec", ""));
try
{
SqlDataAdapter da = new SqlDataAdapter(sql, new SqlConnection(this_ConnectionString));
DataTable dt = new DataTable();
daFill(dt);
return dt;
}
catch
{
return null;
}
}
以上就是关于DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[1]全部的内容,包括:DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[1]、jsp做一个最简单的,连接数据库,实现增删改查人员姓名的功能。一定要非常简单的那种。、如何在电脑中建立本地数据库!越简单越好!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)