繁体   English   中英

C#DataTable SQL查询未插入数据

[英]C# DataTable SQL query not inserting data

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

数据来自服务器上的数据库,并且在将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;

看起来您正在忘记一些事情或没有提供所有代码。 如果您可以提供更多代码,我可能会给您一个更好的答案。 我猜您实际上没有一个名为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;
                }
            }
        }

尝试这样的事情。 您从代码中忘记了一些东西- 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();

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM