Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在数据库中引入数据并在DataGridView中查看日期?_C# - Fatal编程技术网

C# 如何在数据库中引入数据并在DataGridView中查看日期?

C# 如何在数据库中引入数据并在DataGridView中查看日期?,c#,C#,当我单击ok时,我首先需要在数据库中添加数据,并在dataGridView中查看日期,但我没有看到我引入的最后一个值,我在添加第二个数据时看到第一个数据。当我单击“确定”时,如何在同一时间查看它?您应该真正更改上面代码中的许多内容 首先,不要在连接中保留类内全局变量。它是 这是一个昂贵的资源,你应该真正打开、使用和释放它 只有在你需要的时候 其次,应该使用参数化查询而不是字符串 连接。这将避免解析问题、sql注入和 您的查询将更具可读性 第三,将变量名嵌入到string命令中不会导致错误 对于

当我单击ok时,我首先需要在数据库中添加数据,并在dataGridView中查看日期,但我没有看到我引入的最后一个值,我在添加第二个数据时看到第一个数据。当我单击“确定”时,如何在同一时间查看它?

您应该真正更改上面代码中的许多内容

  • 首先,不要在连接中保留类内全局变量。它是 这是一个昂贵的资源,你应该真正打开、使用和释放它 只有在你需要的时候
  • 其次,应该使用参数化查询而不是字符串 连接。这将避免解析问题、sql注入和 您的查询将更具可读性
  • 第三,将变量名嵌入到string命令中不会导致错误 对于实际数中的变量,也应在此处使用 参数化查询方法
例如:

namespace Test
{
    public partial class Form1 : Form
    { 
        OleDbConnection cn;

        private String connParam = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Diana\Documents\Visual Studio 2012\Projects\Test\Test\baza.mdb;Persist Security Info=False";
        public Form1()
        {
            cn = new OleDbConnection(connParam);   
            InitializeComponent();
        }  
        DataSet ds;
        OleDbDataAdapter da;

        private void Form1_Load(object sender, EventArgs e)
        {
            cn.Open();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(textBox1.Text) > 36)
            {          
                MessageBox.Show("Insert a valid data");

                OleDbCommand comm = cn.CreateCommand();
                comm.CommandText = "insert into ins_number (numb) values ('" + this.textBox1.Text + "');";
                comm.ExecuteNonQuery();
                da = new OleDbDataAdapter("select Number,[Red],[Black],[1_18],[19_36],[Even],[Odd],[1Column],[2Column],[3Column],[1Dozen],[2Dozen],[3Dozen] from [number],[ins_number] where number=numb order by [Id_Numb] desc", connParam);
                ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];        
            }
        }
    }
}
我已将全局连接变量移动到Click事件中,并将其包含在using语句中。这将在异常情况下关闭并处理使用后的连接。 当然,您应该删除form_load事件中的全局声明、初始化和openinig

用于填充datagrid的查询中还有其他错误,但我不能确定您的意图是什么。我已经更改了您的查询以检索刚刚插入的记录,但是如果这不是您的计划,那么请适当地更改WHERE条件


另外,如果您在输入数据中发现错误,那么我确信您不想执行插入,因此在messagebox显示后需要一个else部分……

是相同的结果dataGridView中的日期仅在下次我引入日期时写入,例如,我引入1、2、,3,我只看到1和2,但3,我会看到当我添加下一个日期
private void button1_Click(object sender, EventArgs e)
{
    if (Convert.ToInt32(textBox1.Text) > 36)            
        MessageBox.Show("Insert a valid data");
    else
    {
        using(OleDbConnection cn = new OleDbConnection())
        using(OleDbCommand comm = new OleDbCommand("insert into ins_number (numb) values (?)", cn))
        {
             cn.Open();
             comm.Parameters.AddWithValue("@p1",Convert.ToInt32(this.textBox1.Text));
             comm.ExecuteNonQuery();
             da = new OleDbDataAdapter("select Number,[Red],[Black],[1_18],[19_36],[Even],[Odd],"+ 
                              "[1Column],[2Column],[3Column],[1Dozen],[2Dozen],[3Dozen] " +
                              "from [ins_number] where numb=? order by [Id_Numb] desc");
             da.SelectCommand.Parameters.AddWithValue("@p1", Convert.ToInt32(this.textBox1.Text));
             ds = new DataSet();
             da.Fill(ds);
             dataGridView1.DataSource = ds.Tables[0];        
        }
    }
}