背景:
数据表一(Task):
TaskID (Key)
TaskTypeID
...
数据表二(TaskType):
TaskTypeID(Key)
TaskTypeName (Key)
...两个表通过TaskTypeID关联起来。然后在form中使用一个dataGrid,用来显示Task表内容;
同时提供一个comboBox来显示TaskTypeName,以方便根据TaskTypeName来在dataGrid中显示相关Task表中的内容。因此在创建select 语句的时候,改成 select * from Task Where (TaskTypeID LIKE ?)问题:
1、为了在form_load的时候显示所有内容,则加入如下语句
sqlDaTask.SelectCommand.Parameters[0].Value ="%";
结果总是报错:输入字符串格式不正确
加入如下一条可以解决:
sqlDaTask.SelectCommand.Parameters[0].SqlDbType = SqlDbType.VarChar;
还有没有别的方法可以解决这个问题?2、启动的时候检索TaskType表,将其中的TaskTypeName通过comboBox.Items.Add方法加入到comboBox,则在查询的时候需要将sqlDaTask.SelectCommand.Parameters[0].Value设成何值?如果是通过selectedIndex,则TaskType表中的TaskTypeID不连续怎么办?
数据表一(Task):
TaskID (Key)
TaskTypeID
...
数据表二(TaskType):
TaskTypeID(Key)
TaskTypeName (Key)
...两个表通过TaskTypeID关联起来。然后在form中使用一个dataGrid,用来显示Task表内容;
同时提供一个comboBox来显示TaskTypeName,以方便根据TaskTypeName来在dataGrid中显示相关Task表中的内容。因此在创建select 语句的时候,改成 select * from Task Where (TaskTypeID LIKE ?)问题:
1、为了在form_load的时候显示所有内容,则加入如下语句
sqlDaTask.SelectCommand.Parameters[0].Value ="%";
结果总是报错:输入字符串格式不正确
加入如下一条可以解决:
sqlDaTask.SelectCommand.Parameters[0].SqlDbType = SqlDbType.VarChar;
还有没有别的方法可以解决这个问题?2、启动的时候检索TaskType表,将其中的TaskTypeName通过comboBox.Items.Add方法加入到comboBox,则在查询的时候需要将sqlDaTask.SelectCommand.Parameters[0].Value设成何值?如果是通过selectedIndex,则TaskType表中的TaskTypeID不连续怎么办?
解决方案 »
- vassistx怎么输入特殊字符
- 查找C盘以$开头的文件夹
- C#做的多帐号登陆器,做的差不多了,就是在启动帐号的时候,他登不上QQ说密码错误
- 为什么我TabPage的Click事件中的函数没有被执行?
- 如何自定义一个这样的控件
- 我在winform中使用datagrid,此datagrid绑定了DataSource,但是当我把DataGrid进行排序后,我点击其中一行,有没有办法取出我点中行的记录
- Windows datagrid小问题
- 接手前人的项目,出现以下错误,,,,求救!!!
- datagridview 点击列标题排序后,自定义列数据清空的问题
- 【求助】读取文本文件冲突
- 如何在一个进程中,注入自己的线程
- 装了Framework后,可以在哪里设置小数位数吗?
取值:
((ItemVO)comboBox1.SelectedItem).id ----这个是你的TaskTypeId 的值。
((ItemVO)comboBox1.SelectedItem).desc------这个是 TaskTypeName 的值,comboBox显示这个值===================================================
public class ItemVO : System.Object
{
public string id;
public string desc;
public ItemVO(string Id, string Desc)
{
this.id = Id;
this.desc = Desc;
} public override string ToString()
{
return this.desc;
} public override bool Equals(System.Object obj)
{
if (this.GetType().Equals(obj.GetType()))
{
ItemVO that=(ItemVO) obj;
return (this.id.Equals(that.id));
}
return false;
}
public override int GetHashCode()
{
return this.id.GetHashCode();;
}
}================
这样的确能够解决第二个问题中的TaskTypeID不连续的问题,但还是不能使我的查询生效啊
另外:TaskTypeID在sql server中定义为smallint
是你的combo的当前选项的数值而且设定的时候
都是连续的
不会有断开的现象