【问题标题】:C# insert from Datagridview , Column Visit_time Cannot be FoundC# 从 Datagridview 插入,无法找到列 Visit_time
【发布时间】:2017-10-22 16:44:29
【问题描述】:

您好,我正在尝试从 DataGridview 插入数据现在它说无法找到列 visit_date,我在代码内部和任何地方都可以看到它。

我有一个看起来像这样的表

visit_time,visit_date,fullname,visitor_address,visitor_city,visitor_telephone,id_method,organization,visit_type,reason,person_visit,img

我的代码是这样的

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
    using (MySqlConnection cn = new MySqlConnection(constring))
    {
        cn.Open();
        for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
        {
            string sql = @"insert into final_appointments(visit_time,visit_date,fullname,visitor_address,visitor_city,visitor_telephone,id_method,organization,visit_type,reason,person_visit,img) values(@visit_time,@visit_date,@fullname,@visitor_address,@visitor_city,@visitor_telephone,@id_method,@organization,@visit_type,@reason,@person_visit,@img)";
            using (MySqlCommand cmd = new MySqlCommand(sql, cn))
            {
                try
                {
                    cmd.Parameters.AddWithValue("@visit_time", dataGridView1.Rows[i].Cells["visit_time"].Value);
                    cmd.Parameters.AddWithValue("@visit_date", dataGridView1.Rows[i].Cells["visit_date"].Value);
                    cmd.Parameters.AddWithValue("@fullname", dataGridView1.Rows[i].Cells["fullname"].Value);
                    cmd.Parameters.AddWithValue("@visitor_address", dataGridView1.Rows[i].Cells["visitor_address"].Value);
                    cmd.Parameters.AddWithValue("@visitor_city", dataGridView1.Rows[i].Cells["viitor_city"].Value);
                    cmd.Parameters.AddWithValue("@visitor_telephone", dataGridView1.Rows[i].Cells["visitor_telephone"].Value);
                    cmd.Parameters.AddWithValue("@id_method", dataGridView1.Rows[i].Cells["id_method"].Value);
                    cmd.Parameters.AddWithValue("@organization", dataGridView1.Rows[i].Cells["organization"].Value);
                    cmd.Parameters.AddWithValue("@visit_type", dataGridView1.Rows[i].Cells["visit_type"].Value);
                    cmd.Parameters.AddWithValue("@reason", dataGridView1.Rows[i].Cells["reason"].Value);
                    cmd.Parameters.AddWithValue("@person_visit", dataGridView1.Rows[i].Cells["person_visit"].Value);
                    cmd.Parameters.AddWithValue("@img", dataGridView1.Rows[i].Cells["img"].Value);

                    var msg = MessageBox.Show("You are About to Confirm Information"+Environment.NewLine+"Please Click 'OK' to Confirm?","Information",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
                    if (msg == DialogResult.Yes)
                    {
                        cmd.ExecuteNonQuery();
                        MessageBox.Show("Appointment Fully Confirmed!", "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else if (msg == DialogResult.No)
                    {
                        return;
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }
    }
}

我似乎不明白为什么它说找不到列名,我在这里迷路了

【问题讨论】:

  • 您的表final_appointments 是否定义了该列?
  • 题外话,else if (msg == DialogResult.No) { return; } 块没有任何用处,你不妨删除它。
  • @oerkelens 是的。
  • 你能告诉我们吗?会不会有一个小错字?我们看不到您的表定义,因此无法说明为什么找不到该列...
  • 如果注释掉涉及 visit_date 的行会发生什么情况,代码是否正常工作?

标签: c# mysql datagridview


【解决方案1】:

好吧,拼写似乎是正确的,但是 C# 抱怨了一些事情。我必须相信有些事情不匹配。

查看下面的示例代码。此 C# 源代码说明了如何将 DataGridView 连接到数据库以及从 DataGridView 中新建/更新或删除数据库值。

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        SqlCommand sCommand;
        SqlDataAdapter sAdapter;
        SqlCommandBuilder sBuilder;
        DataSet sDs;
        DataTable sTable;        

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = "Data Source=Your_Server_Name;Initial Catalog=Your_Database_Name;Integrated Security=True";
            string sql = "SELECT * FROM Stores";
            SqlConnection connection = new SqlConnection(connectionString);
            connection.Open();
            sCommand = new SqlCommand(sql, connection);
            sAdapter = new SqlDataAdapter(sCommand);
            sBuilder = new SqlCommandBuilder(sAdapter);
            sDs = new DataSet();
            sAdapter.Fill(sDs, "Stores");
            sTable = sDs.Tables["Stores"];
            connection.Close();
            dataGridView1.DataSource = sDs.Tables["Stores"];
            dataGridView1.ReadOnly = true;
            save_btn.Enabled = false;
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }

        private void new_btn_Click(object sender, EventArgs e)
        {
            dataGridView1.ReadOnly = false;
            save_btn.Enabled = true;
            new_btn.Enabled = false;
            delete_btn.Enabled = false;
        }

        private void delete_btn_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                sAdapter.Update(sTable);
            }
        }

        private void save_btn_Click(object sender, EventArgs e)
        {
            sAdapter.Update(sTable);
            dataGridView1.ReadOnly = true;
            save_btn.Enabled = false;
            new_btn.Enabled = true;
            delete_btn.Enabled = true;
        }
    }
}

当然,您可以按照自己的方式进行操作,使用变量。这是最安全,也是首选的方法!

private void Button4_Click(System.Object sender, System.EventArgs e)
{
    DataTable tblReadCSV = new DataTable();
    tblReadCSV.Columns.Add("FName");
    tblReadCSV.Columns.Add("LName");
    tblReadCSV.Columns.Add("Department");
    TextFieldParser csvParser = new TextFieldParser("C:\\Users\\Excel\\Desktop\\Employee.txt");
    csvParser.Delimiters = new string[]{","};
    csvParser.TrimWhiteSpace = true;
    csvParser.ReadLine();
    while (!(csvParser.EndOfData == true))
    {
        tblReadCSV.Rows.Add(csvParser.ReadFields());
    }

    SqlConnection con = new SqlConnection("Server=Server_Name;Database=DB_Name;Trusted_Connection=True;");
    string strSql = "Insert into Employee(FName,LName,Department) values(@Fname,@Lname,@Department)";
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = strSql;
    cmd.Connection = con;
    cmd.Parameters.Add("@Fname", SqlDbType.VarChar, 50, "FName");
    cmd.Parameters.Add("@Lname", SqlDbType.VarChar, 50, "LName");
    cmd.Parameters.Add("@Department", SqlDbType.VarChar, 50, "Department");
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.InsertCommand = cmd;
    int result = dAdapter.Update(tblReadCSV);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2011-10-17
    相关资源
    最近更新 更多