往数据库插入一条记录失败

时间:2023-02-06 21:43:59
刚开始学c#,请指教;
想往数据库写入一条记录,有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

#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 ();
打完收工啦,就这么一点点代码,也不会错,简单吧。

#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

#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 ();
打完收工啦,就这么一点点代码,也不会错,简单吧。

#8


感谢楼上的,你说的方法是很好,
但是我的数据库有很多字段,况且还有大图象字段,
那样很麻烦,也不好维护,
有没有解决上面问题的办法呢??

#9


晕,再多的字段也是这种方法。。。何必要找那么多的变量名来转呢。。有什么不好维护的啊。。都一样的。

#10



问题解决谢谢各位帮助!!!