环境:
使用System.Data.OracleClient
我有一个Web表单,用户可以在我的查询中的每个参数对应的文本框中输入任何数据或不输入任何数据。如果用户输入了没有数据,则文本框将获得“0”值。
这是我的查询:
SELECT "CardNo" , "Name"
FROM CSC.CommercialCardList
WHERE("CardNo"=:CardNo or :CardNo=0) and ("Name"=:Name or :Name=0)
当我右键单击MYDATABASE.xsd面板中tableadaptor的查询,并选择“预览数据”并用“0”填充参数值时,我得到错误(“ORA-01008:并非所有变量都绑定”)
任何人都可以帮助我吗?
- 编辑 -
CardNo = (CardNoTextBox.Text != String.Empty) ? CardNoTextBox.Text : "0";
Name = (NameTextBox.Text != String.Empty) ? NameTextBox.Text : "0";
CommercialCardList.Fill(dt, CardNo,Name);
ds.Tables.Add(dt);
答案 0 :(得分:0)
您需要将4个变量绑定为代码的一部分。
2 for" CardNo" =:CardNo或:CardNo = 0
2 for" Name" =:Name或:Name = 0
答案 1 :(得分:0)
您必须将命令BindByName设置为true:
1-在OracleCommand中,如下所示
namespace MyTableAdapters
{
public partial class MyTabTableAdapter
{
public bool SetBindByName
{
set
{
this.Adapter.InsertCommand.BindByName = value;
this.Adapter.UpdateCommand.BindByName = value;
this.Adapter.DeleteCommand.BindByName = value;
foreach (Oracle.DataAccess.Client.OracleCommand cmd in this.CommandCollection)
{
cmd.BindByName = value;
}
}
}
}
}
2-在如下所示的Tableadaptor中,并调用具有实数值的SetBindByName
export class UserModel {
// various properties here
constructor(/*... 9 madatory params*/) {
}
// static factory
static get empty(): UserModel {
return new UserModel('', '', 0, '', '', '', '', '', '');
}
}