JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的JavaAPI。
JDBC库包含的API为每个通常与数据库的使用相关联的任务:
使得连接到数据库
创建SQL或MySQL语句
执行SQL或MySQL的查询数据库
查看和修改结果记录从根本上说,JDBC是一种规范,它提供的接口,一套完整的,允许便携式访问底层数据库。可以用Java来写不同类型的可执行文件,如:
Java应用程序
JavaApplets
JavaServlets
JavaServerPages(JSP)
EnterpriseJavaBeans(EJBs)所有这些不同的可执行文件就可以使用JDBC驱动程序来访问数据库,并把存储的数据的优势。
JDBC提供了相同的功能,ODBC,允许Java程序包含与数据库无关的代码。
先决条件:
以前正如期进行本教程,需要具备以下两个主题内容很好的了解:
核心Java编程
SQL或MySQL数据库
JDBC架构:
JDBCAPI支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:
JDBCAPI:提供了应用程序对JDBC的管理连接。
JDBCDriverAPI:支持JDBC管理到驱动器连接。JDBCAPI的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库。
JDBC驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。
以下是结构图,它显示了驱动程序管理器方面的JDBC驱动程序和Java应用程序的位置:
常见的JDBC组件:
JDBCAPI提供了以下接口和类:
DriverManager:这个类管理数据库驱动程序的列表。内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
Driver:此接口处理与数据库服务器通信。很少直接与驱动程序对象。相反,使用DriverManager中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息
Connection:此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过唯一的连接对象。
Statement:可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。
ResultSet:这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,让您可以通过移动它的数据。
SQLException:这个类处理发生在一个数据库应用程序的任何错误。
ACCESS是office自带的数据库Access是Office里面的一个组件。是用来制作简单的数据库。
还有的意思就是访问、还有接入的意思。
如Accesslist访问列表
Accesspoint接入点
在办公软件Office套件中,最为广大用户熟悉的是Word和Excel,因为它们功能强大且方便易用,更因为它们不仅可用于办公,还可用于个人写作和家庭记帐理财等。同为Office套件中一部分的Access,虽然有着同样强大的功能,但使用的人却相对少些,不像Word和Excel那样广泛。事实上,真正用过Access的用户,对其强大功能和灵活应用均称赞有加。Access数据库管理系统是MicrosoftOffice套件的重要组成部分,适用于小型商务活动,用以存贮和管理商务活动所需要的数据。Access不仅是一个数据库,而且它具有强大的数据管理功能,它可以方便地利用各种数据源,生成窗体(表单),查询,报表和应用程序等。
数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。
MicrosoftAccess是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。图1是一个“产品”表的例子。“产品”表由10个记录组成,一个记录占一行,每一个记录由产品ID、产品名称、库存量、订货量、单价和折扣率6个字段组成。“产品ID”是字段名,其下面的1,2等是字段的值。
表与表之间可以建立关系(或称关联,连接),以便查询相关联的信息。Access数据库以文件形式保存,文件的扩展名是MDB。
Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。
表(Table)表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。
查询(Query)查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。
窗体(Form)窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。
报表(Report)报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
宏(Macro)宏相当于DOS中的批处理,用来自动执行一系列 *** 作。Access列出了一些常用的 *** 作供用户选择,使用起来十分方便。
模块(Module)模块的功能与宏类似,但它定义的 *** 作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用VisualBasic编程
在本讲及下一讲中将为读者介绍我们程序没有使用的数据组件,并简单介绍一下它们的用途,有些给出了应用示例。需要说明的是,虽然在我们的程序中没有用到,并不表明这些组件不重要,有些还是经常要用的。心铃不可能详细讲解这些数据库组件,主要根据自己的经验给出一些使用技巧、注意事项等等。1 Session组件。它提供应用程序中数据库的有关信息,在单机数据库编程中不显式地使用它,这是因为每个数据库应用程序运行时,Delphi将自动创建一个缺省Session组件,用户可在程序中使用这个缺省的Session组件,而没有必要在设计时设置一个Session组件。Table、Query等组件的属性中有一个SessionName属性,缺省为“Default”,这就是缺省的Session组件。比较常用的是用它的GetTableNames方法,在一些查询有时需要用户选择数据库中的数据表名称列表。比如在列表框中列出我们的数据库别名lklb中所有的数据表名称,代码如下(窗体上要有激活的数据集组件并指明了数据库别名):
procedure TForm1.Button1Click(Sender: TObject)
var MyStringList :TStringList
begin
MyStringList := TStringList.Create
try
Session.GetTableNames('lklb', '',False, False, MyStringList)
ListBox1.Items := MyStringList
finally
MyStringList.Free
end
end
GetTableNames方法的语法如下,
语法:Session.GetTableNames(DataBaseName,Pattern,Extensions,SystemTables,List)。
参数说明:
DataBaseName——数据库名称。
Pattern——数据表类型,用来限制返回哪种类型的数据表,比如是.DB还是.DBF,如果为空则返回所有类型数据表,可以用通配符。
Extentions——布尔型变量,控制返回的数据表是否有扩展名。
SystemTables——对一些数据库来说有系统数据表,若设定为True则返回的数据表名称包括系统数据表。一般设定为False 。
List—保存数据表名称的字符串列表。
2 DBNavigator组件。DBNavigator组件主要用于为用户 *** 作数据集中的记录提供简捷的控制按钮。用户单击其中的按钮就可完成移动记录指针、插入、删除、修改、保存、刷新记录等功能。它的 VisibleButtons属性可指定哪些按钮显示,通过设置Hints属性可以为各控制按钮设置其他的动态提示信息,用户自己设置的动态提示信息会覆盖原来的提示信息,对我们来说提示信息写成中文比较好。
3 DBtext组件。相当于标签(Label)组件,只不过它用于显示数据库中的字段值,其显示内容随记录指针的变化而变化。它的DataField属性指定要显示内容的字段名称。
4 DBEdit组件。用于显示、修改数据表字段值。由于DBEdit一般用来修改或添加新记录使用,所以其ReadOnly属性一般设定为False,若设定为True则不可修改字段内容。
5 DBMemo组件。主要用于显示和编辑数据库表中的大二进制(BLOB)类型的字段值,一般用来处理备注型字段的值,能够显示多行文本。MaxLength属性设置该属性的值用于限制用户向DBMemo 组件中输入字符的个数。若设置该值为0时,表示输入字符的个数没有限制。注意:在运行过程中,用户对DBMemo组件中显示的文本信息是不能够进行剪切、拷贝和粘贴 *** 作的。由于DBMemo组件中包含着大量的文本信息,当指针移动时要更新显示其中的信息需要花费很多的时间,用户可以通过AutoDisplay属性来控制是否自动显示表中的备注型字段。当AutoDisplay设置为False时,在DBMemo组件中只显示其对应表中的字段名而不显示字段中的文本信息,用户如果想浏览字段中的文本信息,用鼠标左键双击DBMemo组件的内部即可;当设置AutoDisplay属性为True时,在DBMemo组件中会自动地显示其对应数据库表中的字段值。
6 DBImage组件。与DBMemo组件类似,它是用来显示和编辑数据库表中的BLOB类型的位图图像字段的。DBImage的ReadOnly属性值若设定为False,就允许用户对位图图像进行编辑,如将图像剪切或拷贝到剪帖板上或从剪帖板上粘帖到DBImage组件中等 *** 作。
7 DBListBox组件。用来当用户修改字段值时显示一个字段值列表供用户选择。在运行过程中,用户单击其中的可选项可以为DBListBox 组件对应的字段赋值,用户不能自己从键盘上输入一个列表框中不存在的字段值。
8 DBComboBox组件。可以认为它是DBEdit组件和DBListBox组件的合成,DBComboBox的可选项也是在设计阶段由程序设计人员设计的。当用户修改当前记录中的字段时,可以直接输入新的字段,也可以打开下拉式列表框选择其中的一个可选项(受Style属性的限制)。Sorted属性决定列表框中的可选项是否按字母的排列顺序排序。 技巧:DBComboBox组件和ComboBox组件有类似的智能查找功能:当用户在编辑框中输入一个字符或汉字后,打开下拉框,会自动移到与第一个字符相同的选项处,依次下去,用户一般只需输入少量的几个字符就可以找到相应的选项。这在选项比较多的情况下非常有用。当然,Sorted属性必须设定为True,否则可能会找不到所需的选项。
9 DBLookupListBox组件。该组件提供多个可选项,但这多个可选项是从相关的其它数据库表中读取的,不是设计时手工输入的,这是其特点。ListSource属性指明DBLookupListBox组件列表选项的数据源,这是非常重要的,否则DBLookupListBox组件不知道从何处去获取数据充填列表框。 一般放置DataSource组件和其相连。ListField属性指定要充填列表框的数据字段,可以一次列出多个字段的内容,但只能选择一个字段的内容去给和DBLookupListBox组件指定的字段赋值,所以必须指定关键字段KeyField。 KeyField属性 和ListField属性相配合使用,指明选择列表中的哪个字段内容为DBLookupListBox组件指定的字段(DataField属性指定)赋值,如果列表中只有一个字段,那么KeyField和ListField应相同。KeyField 属性必须指定,此属性允许一次设定多个字段,每个字段之间用分号隔开即可。使用多个列表字段的好处在于,用户在选择KEY字段内容的同时,可以了解有关的其他信息。
10DBLookupComboBox组件。此组件结合了DBEdit组件和DBLookupListBox组件的功能,用户可以直接向该组件中输入字段值,也可以从下拉式列表框中选择一个可选项,只是下拉式列表框中的可选项是从相关的其他数据库表中读取来的。其属性设置可参考前面的DBComboBox和DBLookupListBox组件。
注意:上面的四个组件DBListBox、DBLookupListBox 、DBComboBox、DBLookupComboBox只能与Table组件配合使用,而不能与Query组件配合使用。
11 DBCheckBox组件。一般用来和数据表中布尔型字段相连。这样一来用户就不必要再输入True/False了,用起来比较方便。它和CheckBox组件的区别在于:DBCheckBox组件必须和数据表中的布尔型字段相连,而CheckBox的数值在程序中给出。
12 DBRadioGroup组件。和某个字段相连,此字段值只能为DBRadioGroup组件的固定数值之一(由用户选择),用户只能选择一个选项。其Items属性双击可打开选项名称编辑器,在这里输入选项的标题。&#118alues属性双击打开选项对应的数据编辑器,这里输入的数据和前面的Items对应,当用户选择第一个选项时,就会从&#118alues列表选择第一个数据充填到相应的字段。注意:如果没有给出&#118alues属性,那么Items标题就作为数据传递给相应的字段。
13 DBRichEdit组件。和DBEdit组件是一样的,只不过它连接的字段必须是RichText文本格式。DBRichEdit组件没有提供对RichText文本的格式化功能,要想修改文本格式应用程序必须自己来做。当文本格式变化而不是文本本身改变时,应用程序必须明确地将数据源控件的Edit属性置为True,否则无法保存变化后的结果。
14 DBCtrlGrid组件。是很有趣的一个组件,它允许同时开多个面板窗口对记录进行显示、修改,而且这些记录是不相同的,是连续的几个记录(用户设定),用户可同时对多个记录进行修改。ColCount属性指定有几列,RowCount属性指定有几行。Orientation属性有两个值供选择: GoHorizontal—滚动条出现在水平方向,GoVertical—滚动条出现在垂直方向。使用用方法:放置一个DBCtrlGrid组件后,在其“活动”面板(即图中表面光滑没有条纹的左上角面板)中放置数据浏览组件如DBEdit等。只能在活动面板上放组件,其它面板无法放置,运行后每个面板上都会有和活动面板相同的界面。再通过ColCount、RowCount来设定面板的行列数,用Orientation属性设定好滚动条的位置就可以使用了。注意:在滚动条移动时或在面板之间转移焦点时都会自动保存数据。滚动条两端的箭头每按一次和在滑块与箭头之间的空白处单击鼠标移动的记录数是不一样的。前者移动一列或一行,后者移动一个屏幕的记录数。
15 DBChart组件。和Chart组件几乎完全一样,只不过是多了一个功能,就是从数据表中获得数据来制做图形。使用方法:在界面中放置数据集、数据源组件后,放置DBChart组件,双击打开设定界面,和Chart组件不同之处在于在Series选项下,DataSource选项下拉列表中有一项为DataSet,选中后下面会出现数据表选择项,然后在Lables、X、Y中可选择相应的数字字段用来做图。
技巧之一:在DBGrid 中实现类DBComboBox列表方法
要实现的功能:在DBGrid网格中输入字段时,单击字段可出现一个下拉列表(类似于DBComboBox),用户可从中选择需要的字段内容,列表框中是固定的几个选项如男、女等。
实现方法举例:假如数据表中有一个“性别”字段,我们让这个字段具有下拉列表功能。在窗体上放置Table、DataSource、DBGrid组件各一个,将三者搭配起来,不用多讲吧。 双击DBGrid1, 在d出的Editing DBGrid1.Columns窗口中,单击Add all Fields 按钮, 将Table1的所有字段添加到DBGrid1中。在Editing DBGrid1.Columns窗口,单击选择一个字段如“性别” ,在Object Inspector窗口中, 单击PickList属性后的省略号,在Strings list editor窗口中输入两行,分别为“男”、“女” ,关闭Strings list editor窗口。 将Table1的Active属性设定为True,然后运行程序,鼠标单击DBGrid1中某个记录的性别字段,将会出现一个下拉列表,列表中选项为“男”、“女”,从中选择一个就可以了,也可以手工输入字段内容
技巧之二、在DBGrid 中实现类DBLookUpComboBox列表的方法。
技巧一中的方法适用于选项比较少的字段的表格输入,如果有上千种商品名称,手工输入显然是不合适的,这时我们使用查找字段来实现。下拉列表的内容来自另外一个数据表的相应字段值,比如来自事先制做好的商品名称数据表。
实现方法:在上面例子的基础上,再添加一个数据集组件Table2,设定其table属性为商品名称数据表。双击Table1, 在d出的Form1.Table1窗口中,鼠标右键单击d出快捷菜单,选择 Add All Fields菜单项,将所有的字段添加,也可选择部分字段,单击“OK”按钮返回。在Form1.Table1窗口中,单击鼠标右键,从快捷菜单中选择“New field”,在“New field”窗口中,添加一个新的查找字段,设定其Name属性如“spmc”,类型为String。选择其“Field Type”为“LookUp”。在“Field Definition”中设定如下:Key Field选择“商品名称”,此字段是一汉字为字段名的字段,是Table1中的字段。在DataSet中选择“Table2”,在LookUp keys中选择spmc,此字段的内容是商品名称,是Table2中的字段。Result Field选择 spmc。设定好上述选项后,单击“OK”按钮返回Form1.Table1窗口。在Form1.Table1窗口中,鼠标单击选择“商品名称”字段,在Object Inspector 窗口中设定其Visible属性为False。为的是让新增的查找字段spmc来代替它。在Form1.Table1窗口中,鼠标单击选择“spmc”字段,在Object Inspector 窗口中设定其DisplayLabel属性为“商品名称”,让其代替“商品名称”字段。将Table1的Active属性设定为True,然后运行程序,鼠标单击DBGrid1中某个记录的商品名称字段,将会出现一个下拉列表,列表中选项为所有的商品名称,这些药品名称来自Table2的数据表,但不能手工输入商品名称。
上面两种方法的不同之处在于:用PickList属性设置的下拉列表,在DBGrid中可手工输入下拉列表中没有的数值,适用于较少的选择项。用查找字段的方法得到的下拉列表在DBGrid中不能手工输入下拉列表中没有的数值,适用于较多的选择项
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)