ORA-01008错误 - 使用OleDb将记录插入Oracle DB

时间:2014-10-15 06:49:05

标签: c# oracle visual-studio-2010

代码涉及使用C#将VS 2010中输入的值中的记录插入到Oracle DB中。数据库已在sqlplus中创建,在VS ive中调试时遇到错误-ORA 01008. Th语法与默认语法匹配一。有人可以指出错误。

OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider="provider";Data Source=xxxx;User ID=usernamePassword=password";

con.Open();

string insertquery = "insert into CHECKLIST(ID,CUSTOMER,SERVER,CHECK_TYPE,DESCRIPTION,PATH_URL,TEXT,CAT3,CAT4) Values (:id,:customer,:server,:check1,:description,:path1,:text1,:cat3,:cat4)";

OleDbCommand cmd = new OleDbCommand(insertquery, con);
OleDbDataAdapter adapter = new OleDbDataAdapter(insertquery, con);

cmd.Parameters.Add(new OleDbParameter(":id", TextBox9.Text));
cmd.Parameters.Add(new OleDbParameter(":customer", TextBox1.Text));
cmd.Parameters.Add(new OleDbParameter(":server", TextBox2.Text));
cmd.Parameters.Add(new OleDbParameter(":check1", TextBox3.Text));
cmd.Parameters.Add(new OleDbParameter(":description", TextBox4.Text));
cmd.Parameters.Add(new OleDbParameter(":path1", TextBox5.Text));
cmd.Parameters.Add(new OleDbParameter(":text1", TextBox6.Text));
cmd.Parameters.Add(new OleDbParameter(":cat3", TextBox7.Text));
cmd.Parameters.Add(new OleDbParameter(":cat4", TextBox8.Text));

cmd.ExecuteNonQuery();

Response.Write("Registration is successful");

con.Close();

1 个答案:

答案 0 :(得分:0)

来自OleDbCommand.Parameters property

  

OLE DB .NET提供程序不支持传递的命名参数   SQL语句或由a调用的存储过程的参数   CommandType设置为Text时的OleDbCommand。在这种情况下,   必须使用问号(?)占位符。例如:

     

SELECT * FROM Customers WHERE CustomerID =?

     

因此,将OleDbParameter对象添加到的顺序   OleDbParameterCollection必须直接对应于的位置   命令文本中参数的问号占位符。

尝试使用?指定参数。

string insertquery = @"insert into CHECKLIST(ID,CUSTOMER,SERVER,CHECK_TYPE,DESCRIPTION,PATH_URL,TEXT,CAT3,CAT4)
                     Values(?,?,?,?,?,?,?,?,?)";

你的OleDbDataAdapter似乎也毫无意义。你只是插入一个数据。您无法返回任何数据以保留OleDbDataAdapter

同时使用using statement来处理您的OleDbConnectionOleDbCommand之类的内容;

using(OleDbConnection con = new OleDbConnection(conString))
using(OleDbCommand cmd = con.CreateCommand())
{
    // Set your CommandText property.
    // Define and add your parameter values.
    // Open your OleDbConnection.
    // Execute your query with ExecuteNonQuery.
}