嵌入式firebird+VS2015实例八

示例CreateTableTest

使用FbConnectionmyConnection定义连接,如果有多处用它,就不能声明成局部变量。

建立VS2015 C#项目:CreateTableTest

OpenDatabaseTest模板

修改代码

1、增加一个按钮:btnCreateTable,“创建空表”,双击,双黄线中间部分不动,其它代码移动过来:

2、但这里会出问题,因为myConnection是个局部变量:

3、要对myConnection重新定义:

        publicFbConnection myConnection;

        …

        myConnection = newFbConnection(GetConnectionString());

完整代码

using System;

using System.Data;

using System.Windows.Forms;

using System.IO;

using FirebirdSql.Data.FirebirdClient;

 

namespace CreateTableTest

{

 

    publicpartialclassFrmMain : Form

    {

        publicFbConnection myConnection;

        privatevoidbtnOpenDB_Click(object sender, EventArgs e)

        {

            //打开数据库

            myConnection = newFbConnection(GetConnectionString());

            try

            {

                myConnection.Open();

                MessageBox.Show("Open a connection");

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

        }

        public FrmMain()

        {

            InitializeComponent();

        }

        staticstringGetConnectionString()// 连接字符串

        {

            FbConnectionStringBuilder cs = newFbConnectionStringBuilder();

            cs.UserID = "SYSDBA";

            cs.Password = "masterkey";

            cs.Database = Application.StartupPath + "\\data\\测试.fdb";

            cs.DataSource = "localhost";

            cs.Charset = "UTF8";

            cs.Port = 3050;

            cs.Dialect = 3;

            cs.Role = "";

            cs.ConnectionLifeTime = 15;

            cs.Pooling = true;

            cs.MinPoolSize = 0;

            cs.MaxPoolSize = 50;

            cs.PacketSize = 8192;

            cs.ServerType = FbServerType.Embedded;

            return cs.ToString();

        }

        privatevoidbtnCreateDB_Click(object sender, EventArgs e)

        {

            //创建数据库

            string path = Application.StartupPath + "\\data\\测试.fdb";

            if (File.Exists(path))

            {

                File.Delete(path);

                FbConnection.CreateDatabase(GetConnectionString());

                MessageBox.Show("文件存在,删除重建!");

            }

            else

            {

                FbConnection.CreateDatabase(GetConnectionString());

                MessageBox.Show("文件不存在,直接创建!");

            }

        }

 

 

 

        privatevoidbtnCreateTable_Click(object sender, EventArgs e)

        {

            //创建空表

            FbCommand createTable = myConnection.CreateCommand();

            createTable.CommandText = "create table TestTBL (id int,\"姓名\" varchar(20))";

            createTable.ExecuteNonQuery();

            createTable.Dispose();

 

            //插入数据

            //插入数据一

            FbCommand insertData = myConnection.CreateCommand();

            insertData.CommandText = "insert into TestTBL values(@id, @name)";

            insertData.Parameters.Clear();

            insertData.Parameters.Add("@id", FbDbType.Integer).Value = 1;

            insertData.Parameters.Add("@name", FbDbType.VarChar, 20).Value = "张三";

            insertData.ExecuteNonQuery();

            //插入数据二

            insertData.CommandText = "insert into TestTBL values(@id, @胡作非为)";

            insertData.Parameters.Clear();

            insertData.Parameters.Add("@id", FbDbType.Integer).Value = 2;

            insertData.Parameters.Add("@胡作非为", FbDbType.VarChar, 20).Value = "李四";

            insertData.ExecuteNonQuery();

 

            insertData.Dispose();

 

            //读取数据

            FbCommand readData = myConnection.CreateCommand();

            readData.CommandText = "select * from TestTBL";

            FbDataReader Reader = readData.ExecuteReader();

            while (Reader.Read())

            {

                string str_Temp = Reader.GetString(0);

                MessageBox.Show(str_Temp);

                str_Temp = Reader.GetString(1);

                MessageBox.Show(str_Temp);

            }

            readData.Dispose();

 

            //DataGridView显示数据

            FbDataAdapter dt = newFbDataAdapter("select * from TestTBL", myConnection);

            DataSet ds = newDataSet();

            dt.Fill(ds, "TestTBL");

            this.dgViewDB.DataSource = ds;

            this.dgViewDB.DataMember = "TestTBL";

            dt.Dispose();

            ds.Dispose();

 

            //关闭连接

            myConnection.Close();

        }

    }

}

测试成功

 

firebird可以说是这个世界上最小的支持存储过程的数据库。Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。 1、Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性;2、Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整;3、Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性;4、不用考虑授权费用(免费),不用担心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭;5、发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件;6、Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选;7、Firebird的运行效率非常高;8、具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改;9、开发环境支持良好,Delphi,C++Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。 1、只读数据库我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序也在光盘上,再加上嵌入式FB数据库服务器,便可以得到一个无与伦比的CDLIVE(即只用光盘就可以运行起来)应用。2、全事务控制一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。3、在线备份不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天) 的操作。4、触发器每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。5、扩展函数我们可以使用C语言,C++,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能6、字符集Firebird实现了很多国际标准的字符集,包括Unicode。7、SQL标准兼容Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于"FULL/LEFT/RIGHT [OUTER] JOIN , UNION, DISTINCT ,子查询(IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, ..), 主键,外键,唯一索引以及所有通用的数据类型。Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。 本易语言 模块,使用Firebird API直接连接,如果使用本地版,直接附带一个fbclient.dll即可,如果连接远程服务端,只需在连接数据库文件路径前添加"远端服务器ip:"即可. 新版:Firebird-3.0.4.33054-0_Win32,可以静默安装,也可以自行安装(不用选择,直接下一步下一步就完成了服务端的安装) 链接:https://pan.baidu.com/s/1Mr_1hsblBDvRpx-E8ofFXg 提取码: gmvq 这里有客户端dll文件,api的c语言示例和头文件(iberror.h是错误码对照;ibase.h是所有函数常量等的头文件)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值