C# 尝试在C中查询数据库,然后将其存储到变量

C# 尝试在C中查询数据库,然后将其存储到变量,c#,sql,C#,Sql,这是我的主要目标:我希望用户能够在文本框中输入computername,并且我的db中有一个表,其中包含computername和IPAddress。所以当我查询数据库时,我希望能够做类似的事情。。。 从computername中选择ipaddress,其中computername='textbox1.text'。这样,当用户键入计算机名时,它将在数据库中查找并使用ipaddress映射到pc 到目前为止,我只是试图将结果从数据库返回到文本框1中。感谢您的帮助 using System; usi

这是我的主要目标:我希望用户能够在文本框中输入computername,并且我的db中有一个表,其中包含computername和IPAddress。所以当我查询数据库时,我希望能够做类似的事情。。。 从computername中选择ipaddress,其中computername='textbox1.text'。这样,当用户键入计算机名时,它将在数据库中查找并使用ipaddress映射到pc

到目前为止,我只是试图将结果从数据库返回到文本框1中。感谢您的帮助

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace testwf
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            InitializeComponent();

                        SqlConnection cs = new SqlConnection(@"Server=10-nuerp-006acdst;Database=Rert;User Id=reports;Password=Password");
            SqlDataAdapter da = new SqlDataAdapter();
            cs.Open();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cs = new SqlConnection(@"Server=10-nuerp-006acdst;Database=Rert;User Id=reports;Password=Password
            SqlDataAdapter da = new SqlDataAdapter();
            cs.Open();
            da.SelectCommand = new SqlCommand();
            SqlCommand command = new SqlCommand("select top 1 * from station", cs);
            SqlDataReader dr = command.ExecuteReader();
            //cs.Open();
            dr.Read();

            while (dr.Read())
            {
                cs.Open();
                command.ExecuteReader();
                textbox1.Text = dr.GetSqlValue(1).ToString();
                MessageBox.Show(dr.GetSqlValue(0).ToString());
                            }

            MessageBox.Show(dr.GetSqlValue(0).ToString());
            cs.Close();

        }
    }
}

下面是一个示例,请参阅


此代码替换按钮单击事件中的内容:

对于uelreaders,答案是:添加SQL参数更容易:

cmd.Parameters.AddWithValue("@parameterName", someVariableOrConstant);

类型是自动确定的,转换工作由框架完成。仅当需要显式设置类型和长度时,才使用urlreader版本。

这是您的确切代码吗?如果是这样,则在按钮的第一行缺少一些项目1\u单击SqlConnection cs=newSqlConnection@Server=10-nuerp-006acdst;数据库=Rert;用户Id=报告;Password=密码应为SqlConnection cs=newSqlConnection@Server=10-nuerp-006acdst;数据库=Rert;用户Id=报告;Password=Password;。另外,根据我收集的信息,像这样使用用户的输入可能会导致一些不好的事情发生。我建议有一些他们可以选择的东西,而不让他们输入任何文本。有什么问题吗?你运行它,会发生什么?顺便说一句,这可能只是你复制它的方式,但这个网站上的编辑器有一个语法高亮,你应该看看你的问题看起来如何。语法显然在底部出错了,这向我暗示了你的代码无论如何都不会编译。你的查询目前有效吗?因为这段代码甚至不会编译。如果您的站点使用DHCP,为什么要在数据库中存储一个可以定期更改的地址?使用DNS可以更好地获取计算机名的IP地址。您应该只在数据库中存储计算机名。我同意@JamieSee的说法,如果您想显示IP地址,您应该在用户查询时从查询工作站的网络上检索它,否则您的信息可能会过期。I.P地址通常只租x时间段,而且它唯一的打印机都有静态IP地址。这是我的第一篇文章,所以我可能在上传代码时搞砸了,当我运行代码时,表单加载良好,但当我单击我的按钮并期望看到ip出现在txtbox中时,会弹出一个错误,表示在没有数据时读取无效。上面的代码确实在messagebox中显示记录,但由于某些原因,它没有在textbox中显示记录。有什么想法吗?有什么想法如何将记录放入textboxWell,在查询的第二列中是否有值?上面的代码和我的代码显示不同的列值。文本框获取第1列的值,消息框显示第0列的值。尝试将文本框值赋值中GetSqlValue的索引从1更改为0。
using (SqlConnection cs = new SqlConnection(@"Server=10-nuerp-006acdst;Database=Rert;User Id=reports;Password=Password"))
{
    cs.Open();

    using (SqlCommand cmd = new SqlCommand("select top 1 * from station", cs))
    using (SqlDataReader dr = command.ExecuteReader())
    {
        while (dr.Read())
        {
            textbox1.Text = dr.GetSqlValue(1).ToString();
            MessageBox.Show(dr.GetSqlValue(0).ToString());
        }
    }
}
cmd.Parameters.AddWithValue("@parameterName", someVariableOrConstant);