下面的代码是自我解释的。我在表单上有16个输入源(文本框,组合框等),我希望所有这些输入都进入我创建的mysql表,称为submissiontable。我只粘贴了必要的部分而不是整行550行代码
public partial class Form1 : System.Windows.Forms.Form
{
static string conString = "Server=localhost;Database=Work;uid=root;Pwd=password";
MySqlConnection mson = new MySqlConnection(conString);
MySqlCommand mcd;
MySqlDataAdapter adapter;
MySqlDataReader rdr;
DataTable dt = new DataTable();
private void btn_submit_Click(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
submit(txt_empid.ToString(), txt_empname.ToString(), txt_mgrid.ToString(), txt_mgrname.ToString(), txt_phno.ToString(), txt_emailid.ToString(), txt_dept.ToString(), txt_circle.ToString(), txt_rqst_type.ToString(), txt_pol_period.ToString(), txt_bj.ToString(), txt_chngtype.ToString(), txt_sod.ToString(), txt_destapp.ToString());
}
else
MessageBox.Show("Agree the terms and conditions");
}
//Submit
private void submit(string empid, string empname, string mgrid, string mgrname, string empph, string empmail, string empdept, string empcircle, string rqsttype, string polperiod, string busjur, string chngtype, string sodno, string destapp )
{
//sql stmt
string submitdb = "INSERT INTO submissiontable(empid,empname,mgrid,mgrname,empph,empmail,empdept,empcirlce,rqsttype,polperiod,buisinessjuris,chngtype,sodno,destapp) VALUES(@eid,@enam,@mgid,@mgnam,@ephone,@email,@edept,@ecirc,@reqtyp,@polprd,@busjur,@chtype,@sodno,@dapp)";
mcd = new MySqlCommand(submitdb, mson);
mcd.Parameters.AddWithValue("@eid", empid);
mcd.Parameters.AddWithValue("@enam", empname);
mcd.Parameters.AddWithValue("@mgid", mgrid);
mcd.Parameters.AddWithValue("@mgnam", mgrname);
mcd.Parameters.AddWithValue("@ephone", empph);
mcd.Parameters.AddWithValue("@email", empmail);
mcd.Parameters.AddWithValue("@edept", empdept);
mcd.Parameters.AddWithValue("@ecirc", empcircle);
mcd.Parameters.AddWithValue("@reqtyp", rqsttype);
mcd.Parameters.AddWithValue("@polprd", polperiod);
mcd.Parameters.AddWithValue("@busjur", busjur);
mcd.Parameters.AddWithValue("@chtype", chngtype);
mcd.Parameters.AddWithValue("@sodno", sodno);
mcd.Parameters.AddWithValue("@dapp", destapp);
//OPEN MSON[CON] AND EXEC INSERT
try
{
mson.Open();
if (mcd.ExecuteNonQuery() > 0)
{
MessageBox.Show("Submitted Successfully");
}
mson.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
MessageBox.Show("test");
mson.Close();
}
}
CREATE TABLE `submissiontable` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`empid` varchar(20) DEFAULT NULL,
`empname` varchar(20) DEFAULT NULL,
`mgrid` varchar(20) DEFAULT NULL,
`mgrname` varchar(20) DEFAULT NULL,
`empph` varchar(20) DEFAULT NULL,
`empmail` varchar(20) DEFAULT NULL,
`empdept` varchar(20) DEFAULT NULL,
`empcircle` varchar(20) DEFAULT NULL,
`rqsttype` varchar(20) DEFAULT NULL,
`polperiod` varchar(20) DEFAULT NULL,
`buisinessjuris` varchar(50) DEFAULT NULL,
`chngtype` varchar(20) DEFAULT NULL,
`sodno` varchar(20) DEFAULT NULL,
`destapp` varchar(20) DEFAULT NULL,
PRIMARY KEY (`ID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8
为什么插入操作不起作用?我在catch部分放置了一个消息框,以确认错误是在try部分中[作为弹出测试的消息框]
答案 0 :(得分:3)
嗯,MySQL错误1054代表未知列。这意味着在insert语句中,您使用了表中不存在的列名。错误消息本身将告诉您有关哪个列名称可能导致错误的更多详细信息。解释错误消息并修复列名称问题。
根据拼写,我认为buisinessjuris
是打字错误的好候选人。
答案 1 :(得分:1)
sql的错误1054基本上是未知列。请仔细检查您的INSERT查询中提到的所有列是否也在您的表格中#34; submissiontable"。
如果他们在那里,请使用您的表格的创建查询回复我。
谢谢
感谢您发布您的数据库
如果你的数据库中的id列没有自动生成..你必须在插入查询中指定它的值,因为它根据你的数据库不能为空
列名称empcircle在插入查询中有所不同。 将它从empcirlce改为empcircle