Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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# 在对象中存储SQL数据库?_C#_Database_Winforms_Listview - Fatal编程技术网

C# 在对象中存储SQL数据库?

C# 在对象中存储SQL数据库?,c#,database,winforms,listview,C#,Database,Winforms,Listview,更新:我想我明白了。任何额外的建议都将不胜感激 我已经连接到我的数据库,但现在我希望能够使用这些数据。我想用项目(仅限大图标/小图标视图)填充ListView,然后能够使用SelectedItemsChanged单击项目以在文本框中查看它们和/或能够更新值 (ListView在开始时显示所有数据/项目。用户可以选择一个项目。该项目保存数据。该数据显示在适当的控件中。) 所以我创建了另一个类“UserInfo”来存储它们。在我的主要状态下,我设置了接球手,但我不确定如何做二传手 int row =

更新:我想我明白了。任何额外的建议都将不胜感激

我已经连接到我的数据库,但现在我希望能够使用这些数据。我想用项目(仅限大图标/小图标视图)填充ListView,然后能够使用SelectedItemsChanged单击项目以在文本框中查看它们和/或能够更新值

(ListView在开始时显示所有数据/项目。用户可以选择一个项目。该项目保存数据。该数据显示在适当的控件中。)

所以我创建了另一个类“UserInfo”来存储它们。在我的主要状态下,我设置了接球手,但我不确定如何做二传手

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;
        }
    }