ORA-01008错误使用OleDb将记录插入Oracle数据库
本文关键字:记录 插入 Oracle 数据库 OleDb 错误 ORA-01008 | 更新日期: 2023-09-27 18:26:36
该代码涉及使用C#将VS 2010中输入的值中的一条记录插入Oracle数据库。该数据库已在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();
来自OleDbCommand.Parameters
属性
OLE DB.NET提供程序不支持用于传递的命名参数SQL语句或由调用的存储过程的参数当CommandType设置为Text时使用OleDbCommand。在这种情况下必须使用问号(?)占位符。例如:
从CustomerID=的客户中选择*?
因此,OleDbParameter对象添加到OleDbParameterCollection必须直接对应于命令文本中参数的问号占位符。
尝试使用?
指定参数。
string insertquery = @"insert into CHECKLIST(ID,CUSTOMER,SERVER,CHECK_TYPE,DESCRIPTION,PATH_URL,TEXT,CAT3,CAT4)
Values(?,?,?,?,?,?,?,?,?)";
你的OleDbDataAdapter
似乎也毫无意义。你只是插入了一个数据。您不返回任何要保存在OleDbDataAdapter
中的数据。
也可以使用using
语句来处理您的OleDbConnection
和OleDbCommand
类;
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.
}