访问不保存输入
本文关键字:输入 保存 访问 | 更新日期: 2023-09-27 18:16:04
我在Yt, Google等上查了一下。我尝试了5种解决方案,但一无所获。我把txt放到文本框,它显示在列表框中,但不去访问。
简而言之
private void addAF_Click(object sender, EventArgs e)
{
if (aFInput.Text != "") {
string q = "insert into AFs (AFNumber,SendDate,Notes) values ('"+aFInput.Text.ToString()+"','"+DateTime.Now+"', '"+notes.Text.ToString()+"')";
dosomemagic(q);
aFInput.Text = null;
}
}
private void dosomemagic(String q)
{
try
{
cnn.Open();
cmd.CommandText = q;
cmd.ExecuteNonQuery();
cnn.Close();
loaddata();
}
catch (Exception e)
{
cnn.Close();
MessageBox.Show(e.Message.ToString());
}
}
private void ANLPA_Load(object sender, EventArgs e)
{
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AFdbB03.mdb;";
cmd.Connection = cnn;
loaddata();
}
private void loaddata()
{
AFList.Items.Clear();
try
{
string q = "select * from AFs";
cmd.CommandText = q;
cnn.Open();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
AFList.Items.Add(dr[1].ToString());
keyList.Items.Add(dr[0].ToString());
}
}
dr.Close();
cnn.Close();
}
catch (Exception ex)
{
cnn.Close();
MessageBox.Show(ex.Message.ToString());
}
}
当你的应用程序运行时,它从文件夹BIN'DEBUG
运行,当你开始调试会话时,你将你的记录添加到Visual Studio复制在该文件夹中的数据库中。如果你的文件有属性Copy to Output Directory
设置为Copy Always
,那么每次你开始一个调试会话,Visual Studio将MDB文件从你的项目文件夹复制到你的输出目录(BIN' debug或x86变体)
通过这种方式,您的代码可以正确写入,但在下次运行时,您的数据会消失,因为文件已被Visual Studio
所替换。设置属性Copy To Output directory
为Copy Never
或Copy if Newer
作为旁注,请花一点时间学习如何使用参数化查询。您的代码实际上可以工作,但是如果您的notes文本框在其Text属性中包含单个引号会发生什么?代码将因语法错误而崩溃。但这只是你的小问题。有一种众所周知的黑客技术叫做Sql注入,它可以破坏数据库中的数据。