在DataTable中将Yes/No/Null从SQL转换为True/False

Sco*_*ain 4 c# sql sql-server datatable

我有一个Sql数据库(我无法控制架构),它有一个将具有varchar值为"是","否"的列,或者它将为null.出于我正在做的目的,null将被处理为否.

我使用数据表和表适配器在c#net 3.5中编程来提取数据.我想使用绑定源将列直接绑定到我的程序中的复选框但是我不知道如何或在何处将逻辑转换为字符串Yes/No/null为布尔值True/False;

从SQL Server读取null并在更新上写回No是可接受的行为.

任何帮助是极大的赞赏.

编辑 - 这是为Windows开发的.

Dat*_*han 9

修改填充您的查询DataTable以包含适当的逻辑:

SELECT col1, col2, CAST(CASE YesNoNullCol WHEN 'yes' THEN 1 WHEN 'no' THEN 0 ELSE 0 END AS BIT) FROM SomeTable
Run Code Online (Sandbox Code Playgroud)

编辑:忘了你必须在DataAdapter上提供插入/更新/删除命令.

为了使用上述方法使提交生效,您需要指定用于执行DB更新的自定义命令:

SqlCommand insert_cmd = connection.CreateCommand();
insert_cmd.CommandText = "INSERT INTO SomeTable(col1, col2, YesNoNullCol) VALUES (@col1, @col2, CASE @yesnonullcol WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' ELSE 'No' END)";
var yesno_col = insert_cmd.CreateParameter();
yesno_col.Name = "@yesnonullcol";
insert_cmd.Parameters.Add(col1_parm);
myAdapter.InsertCommand = insert_cmd;
Run Code Online (Sandbox Code Playgroud)

而且,当然,你需要为提供的参数@col1,并@col2为好.然后,如果要支持这些操作,则需要创建用于更新和删除的命令.