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