【问题标题】:C# DataTable SQL query not inserting dataC# DataTable SQL 查询不插入数据
【发布时间】:2014-02-27 13:55:16
【问题描述】:

我对 SQL 比较陌生,这是我第一次尝试在 C# 中使用它,但不明白为什么这不起作用,我知道我试图复制的列中确实有值,但是当我尝试在 DataGridViewer 中显示“测试”数据表,根本没有行

数据来自服务器上的数据库,设置时显示正常 DataGridViewer.DataSource 到 thisDataSet.USERS

这是我的代码:

        DataTable test = new DataTable();
        test.Columns.Add("UserID");

        SqlCommand command = new SqlCommand();
        command.CommandText = "INSERT INTO test (UserID) SELECT USER_ID FROM thisDataSet.USERS";
        command.ExecuteNonQuery();

        dgvDataViewer.DataSource = test;

【问题讨论】:

  • 我认为您期望 SQL 命令作用于本地 C# 变量,但它们不会 - 它们作用于服务器数据。您是否在某处有 SQL 数据库,或者您只是想使用 SQL 语法?
  • 我有一个 SQL 数据库
  • 我想将服务器上数据库中的 user_id 插入到“测试”数据表中
  • 首先,您缺少数据库的连接字符串。而且 sqlcommand 也不知道测试数据表。
  • 你想在数据表中批量插入吗?

标签: c# sql datagridview


【解决方案1】:

您似乎忘记了一些事情或没有提供所有代码。如果您可以提供更多代码,我可能会给您更好的答案。我猜你实际上并没有一个名为 thisDataSet 的数据库和一个名为 Users 的表?如果你这样做,你可能会用一种奇怪的方式来命名它。

还想指出,我没有关闭我的 DataAdapter 或 SQL 连接,因为它们是 IDisposable 并且包含在 using 语句中,所以它已经为你完成了。

DataTable test = new DataTable();
        using (SqlConnection conn = new SqlConnection("CONN STRING HERE"))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = "do sql stuff";
                cmd.ExecuteNonQuery();

                cmd.CommandText = "select * from test";
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    da.Fill(test);
                    dgvDataViewer.DataSource = test;
                }
            }
        }

【讨论】:

    【解决方案2】:

    我创建了一个新方法。您可以简单地调用该方法来填充网格

    public DataTable GetData(SqlConnection Cn)
    {
        try
        {
            DataTable dt = null;
            using (var cmd = new SqlCommand())
            {
                cmd.Connection = Cn;
                cmd.CommandText = "select * from Table";
                using (var sda = new SqlDataAdapter(cmd))
                {
                    dt  = new DataTable();
                    sda.Fill(dt);
                }
            }
            return contNames;
        }
        catch (Exception err)
        {
            return null;
        }
    }            
    

    并填充您的数据网格:-

     var con = new SqlConnection("connectionstring");
    dataGridView1.DataSource = GetData(connection);
    

    【讨论】:

      【解决方案3】:

      试试这样的。您忘记了代码中的一些内容 - connection string、打开连接等...

      SqlDataReader Reader = null;
      SqlConnection Connection = null;
      SqlCommand Command = null;
      string ConnectionString = "YourConnectionString";
      string CommandText = "SELECT USER_ID  AS [UserID] FROM MySQLtable";
      
      Connection = new SqlConnection(ConnectionString);
      Connection.Open();
      Command = new SqlCommand(CommandText, Connection);
      Reader = Command.ExecuteReader();
      
      DataTable test= new DataTable();
      test.Load(Reader);
      
      Reader.Close();
      Command.Dispose();
      Connection.Close();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 1970-01-01
        • 2014-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        相关资源
        最近更新 更多