操作系統: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文件提供的連接方法。下一次測試整理好再寫。