我看了Yt,谷歌等。我尝试了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());
}
}
答案 0 :(得分:0)
当您的应用运行时,它会从文件夹BIN\DEBUG
运行,并在启动调试会话时将您的记录添加到Visual Studio中复制到该文件夹中的数据库中。如果您的文件的属性Copy to Output Directory
设置为Copy Always
,则每次启动调试会话时,Visual Studio都会将MDB文件从项目文件夹复制到输出目录(BIN \ DEBUG或x86变体)< / p>
通过这种方式,您的代码可以正确写入,但在下次运行时,您的数据会消失,因为该文件已被Visual Studio替换
将属性Copy To Output directory
设置为Copy Never
或Copy if Newer
作为旁注,请花点时间学习如何使用parameterized query。您的代码实际上有效,但如果您的备注文本框在其Text属性中包含单引号会发生什么?代码将因语法错误而崩溃。但这是你问题的一个小问题。有一种名为Sql Injection的知名黑客技术可以破坏数据库中的数据。