Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OLE DB ORA-01008:并非所有变量都已绑定(但它们已绑定)_C#_Oledb - Fatal编程技术网

C# OLE DB ORA-01008:并非所有变量都已绑定(但它们已绑定)

C# OLE DB ORA-01008:并非所有变量都已绑定(但它们已绑定),c#,oledb,C#,Oledb,我正在尝试与一个运行非常旧版本的Oracle(8)的应用程序交谈。我需要先进行查询以获取最新的id,然后使用此id插入。不幸的是,我在执行时出错。我已经在网上搜索过了,但是我找不到任何人使用这种查询,所以如果有任何帮助,我将不胜感激 private static OleDbConnection GetConn() { return new OleDbConnection() { ConnectionString = ConfigurationManager.ConnectionStrin

我正在尝试与一个运行非常旧版本的Oracle(8)的应用程序交谈。我需要先进行查询以获取最新的id,然后使用此id插入。不幸的是,我在执行时出错。我已经在网上搜索过了,但是我找不到任何人使用这种查询,所以如果有任何帮助,我将不胜感激

private static OleDbConnection GetConn()
{
return new OleDbConnection()
{
    ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString
    };
}

public bool AddModel(Model model)
{
    OleDbConnection conn = GetConn();
    conn.Open();
    StringBuilder sb = new StringBuilder();
    sb.Append("DECLARE max_id INTEGER; ");
    sb.Append("BEGIN ");
    sb.Append("SELECT MAX(SORTID) into max_id FROM QRY.TABLE where status = 'A'; ");
    sb.Append("max_id := max_id + 1; ");
    sb.Append("INSERT INTO QRY.TABLE (COL1,COL2,COL3,COL4,COL5,COL6,COL7,SORTID) VALUES(? ,? ,? ,? ,? ,? ,? ,max_id);");
    sb.Append("END;");
    using (OleDbCommand command = new OleDbCommand(sb.ToString(), conn))
{
        command.Parameters.AddWithValue("COL1", model.ID);
    command.Parameters.AddWithValue("COL2", model.Description);
    command.Parameters.AddWithValue("COL3", model.Perc);
    command.Parameters.AddWithValue("COL4", model.Amount);
    command.Parameters.AddWithValue("COL5", model.Status);
    command.Parameters.AddWithValue("COL6", model.UpdatedUser);
    command.Parameters.Add("COL7", OleDbType.Date).Value = DateTime.Now;
    command.ExecuteNonQuery();
}
}
注意,我必须重新格式化本文中的代码,以删除对实际表的任何引用,这样它可能会放入一些typeo。真正的代码是编译和运行的。

您可以修改

 sb.Append("INSERT INTO QRY.TABLE (COL1,COL2,COL3,COL4,COL5,COL6,COL7,SORTID) VALUES(@COL1,@COL2,@COL3,@COL4,@COL5,@COL6,@COL7,max_id);");
并对其进行修改

    command.Parameters.AddWithValue("@COL1", model.ID);
    command.Parameters.AddWithValue("@COL2", model.Description);
    command.Parameters.AddWithValue("@COL3", model.Perc);
    command.Parameters.AddWithValue("@COL4", model.Amount);
    command.Parameters.AddWithValue("@COL5", model.Status);
    command.Parameters.AddWithValue("@COL6", model.UpdatedUser);
    command.Parameters.Add("@COL7", OleDbType.Date).Value = DateTime.Now;
您可以修改

 sb.Append("INSERT INTO QRY.TABLE (COL1,COL2,COL3,COL4,COL5,COL6,COL7,SORTID) VALUES(@COL1,@COL2,@COL3,@COL4,@COL5,@COL6,@COL7,max_id);");
并对其进行修改

    command.Parameters.AddWithValue("@COL1", model.ID);
    command.Parameters.AddWithValue("@COL2", model.Description);
    command.Parameters.AddWithValue("@COL3", model.Perc);
    command.Parameters.AddWithValue("@COL4", model.Amount);
    command.Parameters.AddWithValue("@COL5", model.Status);
    command.Parameters.AddWithValue("@COL6", model.UpdatedUser);
    command.Parameters.Add("@COL7", OleDbType.Date).Value = DateTime.Now;


我觉得它很好,所以你确定你传递了正确的数据类型,并且没有空值引起问题吗?我觉得它也很好,不幸的是它不起作用。没有空值,我已经努力编码了这些值。insert语句在我自己运行时起作用。我猜OLEDB不能做这种类型的查询。Oracel不是我的强项,但从我所看到的()来看,在插入状态中,max_id前面需要一个:。我没有Oracel box来测试它,所以请让我知道它是如何运行的。我尝试添加:before maxid仍然存在非所有变量绑定错误。对我来说它看起来很好,所以你确定你传递了正确的数据类型并且没有空值导致问题吗?对我来说它看起来也很正确,不幸它不起作用。没有空值,我已经努力编码了这些值。insert语句在我自己运行时起作用。我猜OLEDB不能做这种类型的查询。Oracel不是我的强项,但从我所看到的()来看,在插入状态中,max_id前面需要一个:。我没有Oracel box来测试它,所以请让我知道它是如何运行的。我尝试添加了:before maxid仍然得到了not all variables bound错误。谢谢,但这实际上并没有回答我的问题。对于Oracle的OleDb provider,它也根本不起作用。bind变量应该是一个问号“?”。您可以阅读本文示例:或者更新的版本where?使用@Cookie是的,它可能有不同的版本,但这实际上并不能回答我的问题。它也根本不适用于Oracle的OleDb提供程序。bind变量应该是一个问号“?”。您可以阅读本文示例:或者更新的版本where?是否使用@Cookie是的,可能是不同的版本