public void ExcuteSQL(string SQL)
{
string ConStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb;";
string SelectCmd = "select * from student;";
OleDbConnection Con = new OleDbConnection(ConStr);
OleDbCommand Com = new OleDbCommand();
Com.CommandText = SQL;
Com.CommandType = CommandType.Text;
Com.Connection = Con;
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
try
{
Con.Open();
Com.ExecuteNonQuery();
Com.CommandText = SelectCmd;
Com.CommandType = CommandType.Text;
da.SelectCommand = Com;
da.Fill(ds, "student");
}
catch (OleDbException oe)
{
MessageBox.Show(oe.Message, "Error");
}
finally
{
if (Con.State == ConnectionState.Open)
Con.Close();
}
}
private void 插入_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "")
{
MessageBox.Show("请输全所有项!");
return;
}
string InsertSQL = "insert into student(TestID,Name,Email,Address) values('";
InsertSQL += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
ExcuteSQL(InsertSQL);//调用ExcuteSQL()
MessageBox.Show("恭喜,插入成功!");
}
16 个解决方案
#1
lz把这句
insert into student(TestID,Name,Email,Address) values('";
InsertSQL += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
换成这个试看看
insert into student(TestID,Name,Email,Address) values('"+ textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
insert into student(TestID,Name,Email,Address) values('";
InsertSQL += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
换成这个试看看
insert into student(TestID,Name,Email,Address) values('"+ textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
#2
这有啥区别 一模一样 我说了添加记录可以成功 就是关闭项目再启动项目时按下F5的那一刻 记录就消失了 之前记录一直在数据库中存在着
#3
你的窗体加载事件中都执行了什么方法啥?
肯定是跟你加载事件中的某些处理有关。 不然acces数据库里的东西不会平白无故消失 的
肯定是跟你加载事件中的某些处理有关。 不然acces数据库里的东西不会平白无故消失 的
#4
插入后
重新获取数据是否存在
重新获取数据是否存在
#5
其实不要按F5 只要按F11(这总没加载窗体吧) 刚到
static void Main()
{
这个左大括号插入的记录来就消失了 真是匪夷所思啊。。。
static void Main()
{
这个左大括号插入的记录来就消失了 真是匪夷所思啊。。。
#6
程序编完关闭项目之后不再次开启项目的话 直接运行生成的.exe文件 那个插入的记录还在哦 我是用Access2003一直盯着这个数据库的
插入数据后 点“查询”记录在数据库中
插入数据后 点“查询”记录在数据库中
#7
还有一个就是 我student.mdb数据库是放在debug目录下才出现这种情况的 如果把student.mdb不放在debug目录就不会出现这个问题 再次启动项目后 点“查询”添加的记录还在 我真想不通,我在很多群问了 都没人解决
有人要代码看没 我打包给你 我邮箱bkxmgx@163.com QQ9850634
有人要代码看没 我打包给你 我邮箱bkxmgx@163.com QQ9850634
#8
属性页中,选“不复制”或者“如果较新则复制”
#9
是的~~就是这个答案~~本人刚刚解决了!
#10
还有就是 只运行exe文件 每次插入都会成功 连续执行5次插入 5次插入 的记录都一直会存在Access数据库中
#11
按你说的方法试了 不起作用啊 属性页的默认设置就是“不复制” 我改成“如果较新则复制”还是一样的 。。。。。。。。。。。。。。。。。。。。。。。。。。
#12
VS会用BIN上面目录的数据库把你BIN目录里面的数据库覆盖。,
#13
估计我程序编错了 只是没出现错误和警告 我再去编编。。。。。。。。。。。。。。。
#14
。。。。白跟你说了。你没发现你项目里面有两个数据库吗?bin目录下面一个,项目根目录下面一个,项目运行的时候你操作的是BIN下面那个数据库,你退出调试后,在F5,VS会先COPY项目根目录下面那个数据库到BIN下面,覆盖你上次调试修改的数据。DO YOU UNDERSTAND?
#15
f800051235 你说的不错 看来你以前也遇到过一样的问题 呵呵
请问解决办法是什么?
请问解决办法是什么?
#16
很简单的
因为你的程序修改的是DEBUG目录下的复制过去的数据库
你应该吧你的数据库源文件的属性设置成了始终复制
因此当你重新执行程序的时候 你旧的没有那条记录的数据重新把你插入新数据的数据库给覆盖掉了
只要把数据源文件的属性设置成如果教新则复制就好
但是要注意
当你数据库源文件有了修改(其实只要打开一次就认为有修改),重新生成了还是会覆盖的
因为你的程序修改的是DEBUG目录下的复制过去的数据库
你应该吧你的数据库源文件的属性设置成了始终复制
因此当你重新执行程序的时候 你旧的没有那条记录的数据重新把你插入新数据的数据库给覆盖掉了
只要把数据源文件的属性设置成如果教新则复制就好
但是要注意
当你数据库源文件有了修改(其实只要打开一次就认为有修改),重新生成了还是会覆盖的
#1
lz把这句
insert into student(TestID,Name,Email,Address) values('";
InsertSQL += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
换成这个试看看
insert into student(TestID,Name,Email,Address) values('"+ textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
insert into student(TestID,Name,Email,Address) values('";
InsertSQL += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
换成这个试看看
insert into student(TestID,Name,Email,Address) values('"+ textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text+"','"+textBox4.Text+"')";
#2
这有啥区别 一模一样 我说了添加记录可以成功 就是关闭项目再启动项目时按下F5的那一刻 记录就消失了 之前记录一直在数据库中存在着
#3
你的窗体加载事件中都执行了什么方法啥?
肯定是跟你加载事件中的某些处理有关。 不然acces数据库里的东西不会平白无故消失 的
肯定是跟你加载事件中的某些处理有关。 不然acces数据库里的东西不会平白无故消失 的
#4
插入后
重新获取数据是否存在
重新获取数据是否存在
#5
其实不要按F5 只要按F11(这总没加载窗体吧) 刚到
static void Main()
{
这个左大括号插入的记录来就消失了 真是匪夷所思啊。。。
static void Main()
{
这个左大括号插入的记录来就消失了 真是匪夷所思啊。。。
#6
程序编完关闭项目之后不再次开启项目的话 直接运行生成的.exe文件 那个插入的记录还在哦 我是用Access2003一直盯着这个数据库的
插入数据后 点“查询”记录在数据库中
插入数据后 点“查询”记录在数据库中
#7
还有一个就是 我student.mdb数据库是放在debug目录下才出现这种情况的 如果把student.mdb不放在debug目录就不会出现这个问题 再次启动项目后 点“查询”添加的记录还在 我真想不通,我在很多群问了 都没人解决
有人要代码看没 我打包给你 我邮箱bkxmgx@163.com QQ9850634
有人要代码看没 我打包给你 我邮箱bkxmgx@163.com QQ9850634
#8
属性页中,选“不复制”或者“如果较新则复制”
#9
是的~~就是这个答案~~本人刚刚解决了!
#10
还有就是 只运行exe文件 每次插入都会成功 连续执行5次插入 5次插入 的记录都一直会存在Access数据库中
#11
按你说的方法试了 不起作用啊 属性页的默认设置就是“不复制” 我改成“如果较新则复制”还是一样的 。。。。。。。。。。。。。。。。。。。。。。。。。。
#12
VS会用BIN上面目录的数据库把你BIN目录里面的数据库覆盖。,
#13
估计我程序编错了 只是没出现错误和警告 我再去编编。。。。。。。。。。。。。。。
#14
。。。。白跟你说了。你没发现你项目里面有两个数据库吗?bin目录下面一个,项目根目录下面一个,项目运行的时候你操作的是BIN下面那个数据库,你退出调试后,在F5,VS会先COPY项目根目录下面那个数据库到BIN下面,覆盖你上次调试修改的数据。DO YOU UNDERSTAND?
#15
f800051235 你说的不错 看来你以前也遇到过一样的问题 呵呵
请问解决办法是什么?
请问解决办法是什么?
#16
很简单的
因为你的程序修改的是DEBUG目录下的复制过去的数据库
你应该吧你的数据库源文件的属性设置成了始终复制
因此当你重新执行程序的时候 你旧的没有那条记录的数据重新把你插入新数据的数据库给覆盖掉了
只要把数据源文件的属性设置成如果教新则复制就好
但是要注意
当你数据库源文件有了修改(其实只要打开一次就认为有修改),重新生成了还是会覆盖的
因为你的程序修改的是DEBUG目录下的复制过去的数据库
你应该吧你的数据库源文件的属性设置成了始终复制
因此当你重新执行程序的时候 你旧的没有那条记录的数据重新把你插入新数据的数据库给覆盖掉了
只要把数据源文件的属性设置成如果教新则复制就好
但是要注意
当你数据库源文件有了修改(其实只要打开一次就认为有修改),重新生成了还是会覆盖的