ORA-01008 错误 - 使用 OleDb 将记录插入 Oracle DB
Posted
技术标签:
【中文标题】ORA-01008 错误 - 使用 OleDb 将记录插入 Oracle DB【英文标题】:ORA-01008 error-Inserting a record into Oracle DB using OleDb 【发布时间】:2014-10-15 06:49:04 【问题描述】:该代码涉及使用 C# 将 VS 2010 中输入的值中的记录插入到 Oracle DB 中。数据库已在 sqlplus 中创建,在 VS 中调试时遇到错误-ORA 01008。语法与默认语法匹配一。谁能指出错误。
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】:来自OleDbCommand.Parameters
property
OLE DB .NET 提供程序不支持传递命名参数 SQL 语句或存储过程的参数 当 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来处理你的OleDbConnection
和OleDbCommand
like;
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.
【讨论】:
感谢您的回答。虽然该错误已解决。但是在调试时遇到错误说:MSDAORA' failed with no error message available, result code: E_FAIL(0x80004005) type of error..how to纠正这个错误 @KaashyapSarma 不客气。对于您的第二个问题,我想不出任何信息。如果您还有其他问题,也应该将其作为单独的问题提出。以上是关于ORA-01008 错误 - 使用 OleDb 将记录插入 Oracle DB的主要内容,如果未能解决你的问题,请参考以下文章
Oracle“ORA-01008:并非所有变量都绑定”错误带参数