我有一个表测试甲骨文实体框架参数传递到命令文本
CREATE TABLE TEST
(
ID NUMBER,
NAME VARCHAR2(30 BYTE)
)
CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON test
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
END;
ALTER TABLE TEST ADD (
PRIMARY KEY
(ID)
现在我想从一个页面,从文本框的值插入。
的代码如下
protected void ASPxButton1_Click(object sender, EventArgs e)
{
//string name = Convert.ToString(ASPxTextBox1.Text);
int retVal = 0;
string providerName = "Oracle.DataAccess.Client";
string constr =
@"User Id=scott;Password=tiger;Data Source=orcl;enlist=true";
// Get the provider factory.
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
try
{
using (scope txn = new scope())
{
using (DbConnection conn1 = factory.CreateConnection())
{
conn1.ConnectionString = constr;
conn1.Open();
// Create a command to execute the sql statement.
DbCommand cmd1 = factory.CreateCommand();
cmd1.Connection = conn1;
cmd1.CommandText = @"insert into test ([NAME]) values (:name)";
//OracleParameter Nameprm = cmd1.Parameters.Add("name" , OracleDbType.Varchar2, 10);
//Nameprm.Direction = ParameterDirection.Input;
//Nameprm.Value = ASPxTextBox1;
var name = Convert.ToString(ASPxTextBox1);
var parameter = factory.CreateParameter();
parameter.DbType = System.Data.DbType.String;
parameter.ParameterName = "@name";
parameter.Value = name;
cmd1.Parameters.Add(parameter);
retVal = cmd1.ExecuteNonQuery();
//Console.WriteLine("Rows to be affected by cmd1: {0}", retVal);
// Close the connection and dispose the command object.
conn1.Close();
conn1.Dispose();
cmd1.Dispose();
}
txn.SaveChanges();
}
}
catch (Exception ex)
{
throw;
}
}
}
给出,但我总是得到ORA-00928:缺少SELECT关键字。但如果我直接给它的值,然后插入数据。我试图用很多方式解决它,但仍然没有运气。当我卡在这里时,您的帮助将非常感激。先谢谢你。
卡尔林奇先生感谢您分享您的经验。从我的项目开始,我总是尝试使用odp.net(odac)。以下是我的库使用System;使用System.Data的 – tanvir 2011-12-22 07:05:41
; using System.Data.Common;使用Oracle.DataAccess.Client的 ; using System.Collections.Generic;使用System.Linq的 ; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; – tanvir 2011-12-22 07:06:52
是的,我试着用或不用parameter.direction。在两种情况下,它的工作。最后我遇到了问题。它的行var name = Convert.ToString(ASPxTextBox1);那应该是ar名称= Convert.ToString(ASPxTextBox1.text);. Lollz我的想法非常令人毛骨悚然。在按Tab之前需要查看。无论如何非常感谢。 – tanvir 2011-12-22 07:09:44