MySql.Data.MySqlClient;
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;
namespace DemoPlus
{
public partial class w_pop_empinfo : Form
{
private string empIndex = "";
public w_pop_empinfo()
{
InitializeComponent();
}
public w_pop_empinfo(string index) : this()
{
this.empIndex = index;
string sql = string.Format("select * from emp_info where emp_code={0}", index);
var table = MySql.GetInstance().ExecuteQuery(sql);
if (table.Rows.Count > 0)
{
tb_code.Text = index;
tb_name.Text = table.Rows[0]["emp_name"].ToString();
tb_idcard.Text = table.Rows[0]["emp_idcard"].ToString();
tb_sex.Text = table.Rows[0]["emp_sex"].ToString();
tb_birthday.Text = table.Rows[0]["emp_birthday"].ToString();
tb_age.Text = table.Rows[0]["emp_age"].ToString();
tb_address.Text = table.Rows[0]["emp_address"].ToString();
tb_tel.Text = table.Rows[0]["emp_tel"].ToString();
tb_work.Text = table.Rows[0]["emp_work"].ToString();
}
sql = string.Format("select * from emp_list where emp_code={0}", index);
table = MySql.GetInstance().ExecuteQuery(sql);
foreach (DataRow row in table.Rows)
{
var rowIndex = dgvEduExper.Rows.Add();
dgvEduExper.Rows[rowIndex].Cells["StartTime"].Value = row["date_begin"].ToString();
dgvEduExper.Rows[rowIndex].Cells["EndTime"].Value = row["date_end"].ToString();
dgvEduExper.Rows[rowIndex].Cells["EduCompany"].Value = row["emp_edu"].ToString();
dgvEduExper.Rows[rowIndex].Cells["EduBack"].Value = row["emp_degree"].ToString();
dgvEduExper.Rows[rowIndex].Cells["BackUp"].Value = row["emp_memo"].ToString();
}
}
private void label4_Click(object sender, EventArgs e)
{
}
private void cb_add_Click(object sender, EventArgs e)
{
var index = dgvEduExper.Rows.Add();
}
private void cb_cancel_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void w_pop_empinfo_Load(object sender, EventArgs e)
{
}
private void cb_ok_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(tb_code.Text.Trim()))
{
MessageBox.Show("人员代码不能为空");
return;
}
if (string.IsNullOrEmpty(tb_name.Text.Trim()))
{
MessageBox.Show("人姓名不能为空");
return;
}
if (string.IsNullOrEmpty(tb_birthday.Text.Trim()))
{
MessageBox.Show("出生日期不能为空");
return;
}
var sql = String.Format("update emp_info set emp_name='{1}',emp_idcard='{2}',emp_sex='{3}'," +
"emp_birthday='{4}',emp_age='{5}',emp_address='{6}',emp_tel='{7}',emp_work='{8}' where emp_code='{0}';", tb_code.Text, tb_name.Text,
tb_idcard.Text, tb_sex.Text, tb_birthday.Text, tb_age.Text, tb_address.Text, tb_tel.Text, tb_work.Text);
int result = MySql.GetInstance().ExecuteNoQuery(sql);
//sql = "";
foreach (DataGridViewRow row in dgvEduExper.Rows)
{
sql += string.Format(@"insert into emp_list(emp_code,date_begin,date_end,emp_edu,emp_degree,emp_memo)
values('{0}','{1}','{2}','{3}','{4}','{5}');", tb_code.Text.Trim(), row.Cells["StartTime"].Value.ToString(),
row.Cells["EndTime"].Value.ToString(), row.Cells["EduCompany"].Value.ToString(), row.Cells["EduBack"].Value.ToString(), row.Cells["BackUp"].Value.ToString());
}
result = MySql.GetInstance().ExecuteNoQuery(sql);
int m = (dgvEduExper.RowCount + 1) - result;
if (m == 0)
{
MessageBox.Show("修改成功");
}
else if (result <= 0)
{
MessageBox.Show("修改失败");
}
else
{
MessageBox.Show("部分修改成功");
}
// Application.Restart();
}
private void button1_Click(object sender, EventArgs e)
{
var sql = String.Format("insert into emp_info (emp_code,emp_name,emp_idcard,emp_sex,emp_birthday,emp_age,emp_address,emp_tel,emp_work) value ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')", tb_code.Text, tb_name.Text, tb_idcard.Text, tb_sex.Text, tb_birthday.Text, tb_age.Text, tb_address.Text, tb_tel.Text, tb_work.Text);
if (dgvEduExper.SelectedRows.Count > 0)
{
var index = dgvEduExper.CurrentRow.Index;
dgvEduExper.Rows.Insert(index);
}
}
}
}
我尝试在教育经历的备注里面存放基本信息的主键,但是没有成功
不知道怎么办了,只要能让在增加的时候把基本信息和教育经历一起增加上mysql就行,或者在修改的时候单加教育经历然后上传MySQL也可以
首先,放备注里可不是个好办法,那样虽然存进去了,过后不好通过它进行筛选
你的主从表里,从表通过外键与主表关联,那么外键的字段类型应该与主表主键字段类型一致,这样保证数据也一致
过后也方便用left join等方式进行多表联合查询
至于如何拿到主表的主键
因为你主表主键是自动增长的
所以肯定不能同时插入,而且你也没法同时插入,插入总是有先后顺序的
你先插入主表数据,然后以名字作为关键字进行查询,取主键最大的那一条数据就是你刚刚插入的数据,再把它作为从表的外键插入从表数据即可
或者你的主表主键不再依赖mysql数据库的自增,而是统一使用GUID、UUID之类可以保证唯一的字符串,然后你统一生成一个字符串作为主表的主键和从表的外键