想往数据库写入一条记录,有Sql连接能写入,而用oledb就不正确了,是什么原因啊,
例如
OleDbConnection ocn=oleDbConnection1;
ocn.Open();
script=" Insert Into Employee(sID,sName,sPhone,nAge) Values(@sID,@sName,@sPhone,@nAge)";
OleDbCommand cmd=new OleDbCommand(script,ocn);
cmd.Parameters.Add("@sID",SqlDbType.Char).Value=txt_sID.Text;
cmd.Parameters.Add("@sName",SqlDbType.VarChar).Value=txt_sName.Text;
cmd.Parameters.Add("@sPhone",SqlDbType.VarChar).Value=txt_sPhone.Text;
cmd.Parameters.Add("@nAge",SqlDbType.Int).Value=int.Parse(txt_nAge.Text);
cmd.ExecuteNonQuery();
连接已经打开
10 个解决方案
#1
把SqlDbType改成System.Data.DbType
#2
把SqlDbType改成System.Data.DbType???
这两个有什么?区别吗..
这两个有什么?区别吗..
#3
用try{}catch{}看看能捉到什么错误信息吗...?/
#4
更正一下
cmd.Parameters.Add("@nAge",SqlDbType.Int).Value=int.Parse(txt_nAge.Text);
我在程序中用的是OIeDbType.VarChar
cmd.Parameters.Add("@nAge",SqlDbType.Int).Value=int.Parse(txt_nAge.Text);
我在程序中用的是OIeDbType.VarChar
#5
命令类型为“存储过程”属性没有设定,它默认是CommandText语句
#6
不行啊,报错没有声明变量@sID
我觉得是不是类型不对啊
我觉得是不是类型不对啊
#7
简单的方法,先加入一个 OleDbConnection控件。在属性中有一个oledbconnectionstring寻找你要的数据库地址,这个很简单会有提示的,一般是新建连接,然后先选数据库类型,再找地址,然后设这个控件名为my,再加入一个oledbcommand控件,在其connection中选现有,找到那个my就是我们刚才做的那个,将这个命令控件名设为yy,然后在代码中写。
yy.commandtext="insert into Employee(sID,sName,sPhone,nAge) Values('"+txt_sID.Text+'",.....后面我就不写了,反正就是'"+控件名.text+"')";会有提示的,
然后yy.connection.open();
yy.yy.ExecuteNonQuery ();
yy.Connection .Close ();
打完收工啦,就这么一点点代码,也不会错,简单吧。
yy.commandtext="insert into Employee(sID,sName,sPhone,nAge) Values('"+txt_sID.Text+'",.....后面我就不写了,反正就是'"+控件名.text+"')";会有提示的,
然后yy.connection.open();
yy.yy.ExecuteNonQuery ();
yy.Connection .Close ();
打完收工啦,就这么一点点代码,也不会错,简单吧。
#8
感谢楼上的,你说的方法是很好,
但是我的数据库有很多字段,况且还有大图象字段,
那样很麻烦,也不好维护,
有没有解决上面问题的办法呢??
但是我的数据库有很多字段,况且还有大图象字段,
那样很麻烦,也不好维护,
有没有解决上面问题的办法呢??
#9
晕,再多的字段也是这种方法。。。何必要找那么多的变量名来转呢。。有什么不好维护的啊。。都一样的。
#10
问题解决谢谢各位帮助!!!
#1
把SqlDbType改成System.Data.DbType
#2
把SqlDbType改成System.Data.DbType???
这两个有什么?区别吗..
这两个有什么?区别吗..
#3
用try{}catch{}看看能捉到什么错误信息吗...?/
#4
更正一下
cmd.Parameters.Add("@nAge",SqlDbType.Int).Value=int.Parse(txt_nAge.Text);
我在程序中用的是OIeDbType.VarChar
cmd.Parameters.Add("@nAge",SqlDbType.Int).Value=int.Parse(txt_nAge.Text);
我在程序中用的是OIeDbType.VarChar
#5
命令类型为“存储过程”属性没有设定,它默认是CommandText语句
#6
不行啊,报错没有声明变量@sID
我觉得是不是类型不对啊
我觉得是不是类型不对啊
#7
简单的方法,先加入一个 OleDbConnection控件。在属性中有一个oledbconnectionstring寻找你要的数据库地址,这个很简单会有提示的,一般是新建连接,然后先选数据库类型,再找地址,然后设这个控件名为my,再加入一个oledbcommand控件,在其connection中选现有,找到那个my就是我们刚才做的那个,将这个命令控件名设为yy,然后在代码中写。
yy.commandtext="insert into Employee(sID,sName,sPhone,nAge) Values('"+txt_sID.Text+'",.....后面我就不写了,反正就是'"+控件名.text+"')";会有提示的,
然后yy.connection.open();
yy.yy.ExecuteNonQuery ();
yy.Connection .Close ();
打完收工啦,就这么一点点代码,也不会错,简单吧。
yy.commandtext="insert into Employee(sID,sName,sPhone,nAge) Values('"+txt_sID.Text+'",.....后面我就不写了,反正就是'"+控件名.text+"')";会有提示的,
然后yy.connection.open();
yy.yy.ExecuteNonQuery ();
yy.Connection .Close ();
打完收工啦,就这么一点点代码,也不会错,简单吧。
#8
感谢楼上的,你说的方法是很好,
但是我的数据库有很多字段,况且还有大图象字段,
那样很麻烦,也不好维护,
有没有解决上面问题的办法呢??
但是我的数据库有很多字段,况且还有大图象字段,
那样很麻烦,也不好维护,
有没有解决上面问题的办法呢??
#9
晕,再多的字段也是这种方法。。。何必要找那么多的变量名来转呢。。有什么不好维护的啊。。都一样的。
#10
问题解决谢谢各位帮助!!!