C# 创建没有实体框架的数据
我试图在没有实体框架的情况下使用ASP.NET MVC将数据插入数据库,但它无法工作 我尝试了以下教程:C# 创建没有实体框架的数据,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在没有实体框架的情况下使用ASP.NET MVC将数据插入数据库,但它无法工作 我尝试了以下教程: 这是我的控制器: public class AdresaController : Controller { private OracleConnection conn; public AdresaController() { Connection connection = new Connection(); conn = con
public class AdresaController : Controller
{
private OracleConnection conn;
public AdresaController()
{
Connection connection = new Connection();
conn = connection.GetOracleConnection();
}
public ActionResult Create()
{
return View();
}
// POST: Adresa/Create
[HttpPost]
public ActionResult Create(AdresaModel obAdresa)
{
try
{
AdresaRepository x = new AdresaRepository(conn);
string result = x.CreateAdr(obAdresa);
ViewData["result"] = result;
ModelState.Clear();
return View();
}
catch
{
return View();
}
}
}
这是我的存储库:
public class AdresaRepository
{
private OracleConnection oracleConnection;
public AdresaRepository(OracleConnection oracleConnection)
{
this.oracleConnection = oracleConnection;
}
public string CreateAdr(AdresaModel obAdresa)//
{
string result = "";
try
{
string oString = "insert into adresa(id_adresa, strada, nr_str, bloc, localitate_id_loc) values(@id_adresa, @strada, @nr_str, @bloc, @localitate_id_loc)";
var cmdc = new OracleCommand(oString, oracleConnection);
cmdc.CommandType = CommandType.StoredProcedure;
cmdc.Parameters.Add(new OracleParameter("@id_adresa", obAdresa.IdAdresa));
cmdc.Parameters.Add(new OracleParameter("@strada", obAdresa.Strada));
cmdc.Parameters.Add(new OracleParameter("@nr_str", obAdresa.NrStrada));
cmdc.Parameters.Add(new OracleParameter("@bloc", obAdresa.Bloc));
cmdc.Parameters.Add(new OracleParameter("@localitate_id_loc", obAdresa.IdLoc));
oracleConnection.Open();
result = cmdc.ExecuteNonQuery().ToString();
oracleConnection.Close();
return result;
}
catch
{
return result = "";
}
finally
{
oracleConnection.Close();
}
}
}
这是我的模型:
public class AdresaModel
{
public int IdAdresa { get; set; }
public string Strada { get; set; }
public string NrStrada { get; set; }
public string Bloc { get; set; }
public int IdLoc { get; set; }
}
@kashi_rock走上了正确的道路,但没有很好地解释这个问题。执行命令时,可以将
CommandType
设置为StoredProcedure
,将CommandText
设置为存储过程的名称,也可以将CommnadType
设置为Text
(默认设置),将CommandText
设置为SQL语句。你在混搭。您提供的是内联SQL,但表示希望使用存储过程。基本上,摆脱这一行:
cmdc.CommandType = CommandType.StoredProcedure;
我发现很难相信没有引发异常。它应该试图告诉您没有具有您指定的名称或类似名称的存储过程。您需要启动异常处理游戏,否则您会被其他似乎不起作用但没有说明原因的事情弄糊涂。您会遇到什么错误?如果出现异常,您将在
捕获
块中抛出异常的详细信息。不要那样做。您需要查看异常数据是什么,以便找出问题所在以及如何解决问题。如果您使用的是insert查询,则命令类型不能是存储过程,反之亦然。它不会引发任何异常。但是当我在表单中插入数据时,什么也没有发生…catch{return result=”“;}
正在丢弃您可能得到的任何异常。如果要捕获异常并像这样抑制它,至少应该将其记录到磁盘以供将来参考。否则就无法调试任何东西。这是我的异常:Oracle.ManagedDataAccess.Client.OracleException类型的异常发生在Oracle.ManagedDataAccess.dll中,但未在用户代码中处理“实际引发异常并不奇怪。你有没有按照我的建议把那条线去掉?在那之后还引发了异常吗?顺便说一下,我并没有真正使用Oracle,但我不确定Oracle提供程序是否支持“@”作为参数前缀。我想你可能需要用“p”或“:”来代替。它起作用了。。。我用“:”代替“@”,我做了一点改变。。。谢谢:D