C# 在对象中存储SQL数据库?
更新:我想我明白了。任何额外的建议都将不胜感激 我已经连接到我的数据库,但现在我希望能够使用这些数据。我想用项目(仅限大图标/小图标视图)填充ListView,然后能够使用SelectedItemsChanged单击项目以在文本框中查看它们和/或能够更新值 (ListView在开始时显示所有数据/项目。用户可以选择一个项目。该项目保存数据。该数据显示在适当的控件中。) 所以我创建了另一个类“UserInfo”来存储它们。在我的主要状态下,我设置了接球手,但我不确定如何做二传手C# 在对象中存储SQL数据库?,c#,database,winforms,listview,C#,Database,Winforms,Listview,更新:我想我明白了。任何额外的建议都将不胜感激 我已经连接到我的数据库,但现在我希望能够使用这些数据。我想用项目(仅限大图标/小图标视图)填充ListView,然后能够使用SelectedItemsChanged单击项目以在文本框中查看它们和/或能够更新值 (ListView在开始时显示所有数据/项目。用户可以选择一个项目。该项目保存数据。该数据显示在适当的控件中。) 所以我创建了另一个类“UserInfo”来存储它们。在我的主要状态下,我设置了接球手,但我不确定如何做二传手 int row =
int row = 0;
public UserInfo userData
{
get
{
string sqltest = data.Rows[row]["occupationId"].ToString();
decimal val;
decimal.TryParse(sqltest, out val);
UserInfo u = new UserInfo();
u.FirstName = data.Rows[row]["firstname"].ToString();
u.LastName = data.Rows[row]["lastname"].ToString();
u.UserName = data.Rows[row]["username"].ToString();
u.occupId = val;
u.ImageIndex = 0;
return u;
}
//Setter
}
通常您会有类似于thisValue=value.Text的内容
我无法执行data.Rows[row][“lastname”].ToString()=value.lastname
我可以只使用string f=data.Rows[row][“firstname”].ToString()吗代码>在setter中
感谢您的帮助,我们将根据需要对此进行编辑。请注意,属性取决于行的值。财产依赖其他财产不是一种好的做法。也许你可以实施一个:
另外,我假设occupationId在数据库中存储为十进制,不允许为空。如果它允许空值,您可以这样检查:
decimal val = data.Rows[row]["occupationId"] == DBNull.Value ? 0.0m; (decimal)data.Rows[row]["occupationId"];
如果您不需要和索引属性,代码可以如下所示
请注意,它们被声明为对象。可以为对象指定(设置)任何值。
在getter中,必须将对象强制转换为具体类型
int row = 0;
public UserInfo userData
{
get
{
UserInfo u = new UserInfo();
u.FirstName = data.Rows[row]["firstname"].ToString();
u.LastName = data.Rows[row]["lastname"].ToString();
u.UserName = data.Rows[row]["username"].ToString();
u.occupId = (double)data.Rows[row]["occupationId"];
u.ImageIndex = 0;
return u;
}
set
{
data.Rows[row]["firstname"] = value.FirstName;
data.Rows[row]["lastname"] = value.LastName;
data.Rows[row]["username"] = value.UserName;
data.Rows[row]["occupationId"] = value.occupId;
}
}
谢谢你的回答。我也遇到了使用for循环添加项目的问题,但由于我使用了row,它以10结尾,这会抛出outofindex错误。请使用foreach而不是经典for。或者,如果使用for,则可以获取要处理表单数据的总行数。rows.count添加项时,它使用userData。如果我使用sayinti=0而不是row=0,然后使用for循环,它将只使用索引0,因为我没有在userDataReally中循环,getter/setter近似是不好的。您有两个以上的操作。阅读->获取、更新->设置,但您还需要添加和删除。对于添加新记录,您可以实现一个Add(UserData-user)
方法。通常,我会使用文本框之类的控件,这样更简单。关于数据库,我不确定。我只想用(foreach行…)填充它,但是我能使用每个项目吗?它也不能很好地显示,除非它在详细信息视图中,我不使用它。所以把它放进一个对象中,只显示名字,然后点击它来显示条目值就是我想要的。现在我只关注这一点。
int row = 0;
public UserInfo userData
{
get
{
UserInfo u = new UserInfo();
u.FirstName = data.Rows[row]["firstname"].ToString();
u.LastName = data.Rows[row]["lastname"].ToString();
u.UserName = data.Rows[row]["username"].ToString();
u.occupId = (double)data.Rows[row]["occupationId"];
u.ImageIndex = 0;
return u;
}
set
{
data.Rows[row]["firstname"] = value.FirstName;
data.Rows[row]["lastname"] = value.LastName;
data.Rows[row]["username"] = value.UserName;
data.Rows[row]["occupationId"] = value.occupId;
}
}