VS2019 C# 連接IBM DB2數據庫並查詢數據表

操作系統:win10 64位

C#:VS2019

數據庫:IBM DB2  v11.1_win64_expc

其他工具:IBM Data Studio  ibm_ds4130_win

步驟一:使用命令行或是IBM DB2工具:Data Studio,創建一個數據庫。這裏名稱爲:Student

CREATE DATABASE "Student" AUTOMATIC STORAGE YES ON 'D:' DBPATH ON 'D:'

 

步驟二:創建使用的數據表,這裏建一個簡單的學生信息管理表,TB_STUDENT

DROP TABLE "DB2ADMIN"."TB_STUDENT";

CREATE TABLE "DB2ADMIN"."TB_STUDENT" (
		"學生編號" INTEGER NOT NULL, 
		"學生姓名" VARCHAR(20 OCTETS), 
		"性別" VARCHAR(20 OCTETS), 
		"出生年月" VARCHAR(50 OCTETS), 
		"所在學院" VARCHAR(50 OCTETS), 
		"所學專業" VARCHAR(50 OCTETS), 
		"年齡" VARCHAR(20 OCTETS), 
		"籍貫" VARCHAR(20 OCTETS), 
		"家庭住址" VARCHAR(100 OCTETS), 
		"備註信息" VARCHAR(100 OCTETS), 
		"統招否" VARCHAR(10 OCTETS), 
		"身份證" VARCHAR(50 OCTETS)
	)
	ORGANIZE BY ROW
	DATA CAPTURE NONE 
	IN "USERSPACE1"
	COMPRESS NO;

 

步驟三:打開VS2019(其他的如VS2013等,也是可以的),這裏選擇C#編程語言。

主要代碼:top.cs,用於查看數據表內容

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;


namespace SQL_003
{
    public partial class Top : Form
    {
        public Top()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GetMessage(dgv_Message);
        }

        /// <summary>
        /// 查詢數據庫相關信息
        /// </summary>
        ///<returns>方法返回DataTable對象</returns>
        private void GetMessage(DataGridView dg)
        {
            string strConnForDB2 = "Provider=IBMDADB2;DataSource=192.168.1.3;Database=Student;User ID=db2admin;Password=admin888;protocol=TCPIP;port=50000;";
            /*
            OleDbConnection conStr = new OleDbConnection(
            @"Provider=IBMDADB2;Data Source=localhost;UID=db2admin;PWD=admin888;" );
             */
            OleDbConnection conStr = new OleDbConnection(strConnForDB2);
            string P_Str_SqlStr = string.Format(//創建Sql查詢字符串
             "select * from \"TB_STUDENT\"");
            conStr.Open();
            OleDbCommand cmd = new OleDbCommand(P_Str_SqlStr, conStr);
            OleDbDataAdapter P_OleDataAdapter = new OleDbDataAdapter(cmd);
            DataTable P_dt = new DataTable();//創建數據表
            P_OleDataAdapter.Fill(P_dt);    //填充數據表
            dg.DataSource = P_dt;        //返回數據表
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GetMessage(dgv_Message);
        }

        private void btn_Add_Click(object sender, EventArgs e)
        {
            Add form = new Add();
            form.Show();
        }
    }
}

 

add.cs,用於添加數據

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace SQL_003
{
    public partial class Add : Form
    {
        public Add()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string str_Name, str_Sex, str_School, str_Subject, str_IdNum;
            string str_Age, str_Native, str_FAddr, str_Remark, str_Tongzhao;
            string str_Birthday;
            int nID;
            if (txt_Id.Text == "")
            {
                MessageBox.Show("學生編號不能爲空!", "錯誤提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txt_Id.Focus();
                return;
            }
            if (txt_Name.Text == "")
            {
                MessageBox.Show("學生姓名不能爲空!", "錯誤提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txt_Name.Focus();
                return;
            }
            nID = Convert.ToInt32(txt_Id.Text);
            str_IdNum=txt_IDnum.Text;
            str_Name=txt_Name.Text;
            str_Subject=txt_Subject.Text;
            str_School=txt_School.Text;

            str_Age = txt_Age.Text;
            str_Remark = txt_Remark.Text;
            str_Native = txt_Native.Text;
            str_FAddr = txt_FAddr.Text;

            str_Birthday = dtp_Birthday.Value.ToString("yyyy-MM-dd"); 
            if (cb_Tongzhao.Checked)
            {
                str_Tongzhao = "是";
            }
            else
            {
                str_Tongzhao = "否";
            }

            if (rbt_Male.Checked)
            {
                str_Sex = "男";
            }
            else
            {
                str_Sex = "女";
            }

            string strConnForDB2 = "Provider=IBMDADB2;DataSource=192.168.1.3;Database=Student;User ID=db2admin;Password=admin888;protocol=TCPIP;port=50000;";

            string P_Str_SqlStr = "INSERT INTO \"TB_STUDENT\"(學生編號,學生姓名,性別,出生年月,";
            P_Str_SqlStr += "所在學院,所學專業,年齡,籍貫,家庭住址,備註信息,統招否,身份證) values (";
            P_Str_SqlStr += nID + ", '";
            P_Str_SqlStr += str_Name + "', '";
            P_Str_SqlStr += str_Sex + "','";
            P_Str_SqlStr += str_Birthday +"','";
            P_Str_SqlStr += str_School + "', '";
            P_Str_SqlStr += str_Subject + "', '";

            P_Str_SqlStr += str_Age + "', '";
            P_Str_SqlStr += str_Native + "', '";
            P_Str_SqlStr += str_FAddr + "', '";
            P_Str_SqlStr += str_Remark + "', '";
            P_Str_SqlStr += str_Tongzhao + "', '";
            P_Str_SqlStr += str_IdNum + "')";

            OleDbConnection conStr = new OleDbConnection(strConnForDB2);
            OleDbCommand cmd = new OleDbCommand(P_Str_SqlStr, conStr);
            try
            {
                conStr.Open();
                cmd.ExecuteNonQuery();
                conStr.Close();
                MessageBox.Show("數據添加成功!", "操作成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
            }
            catch (Exception ex)
            {
                MessageBox.Show("數據添加失敗!"+ex, "操作失敗", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();       //關閉當前的窗口,主窗口不關閉。
        }
    }
}

 

窗體設計:C#是一個優秀的界面設計工具,界面比VC++簡單很多,強很多。

 

 

 

這樣運行起來,添加數據,應該可以顯示數據了。接下來,可以繼續增加修改與刪除功能。

 

總結:DB2連接數據庫,其實有好幾種方法,還有一種是使用DB2的DLL文件提供的連接方法。下一次測試整理好再寫。

 

工程下載地址:https://gitee.com/fsmd/DB2_001.git

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章