我对SQL比较陌生,这是我第一次尝试在C#中使用它而无法理解为什么这不起作用,我知道我试图复制的列确实有值,但是当我尝试在DataGridViewer中显示'test'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;
答案 0 :(得分: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;
}
}
}
答案 1 :(得分:0)
尝试这样的事情。您忘记了代码中的一些内容 - 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();
答案 2 :(得分:0)
我创建了一个新方法。您可以简单地调用该方法来填充网格
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);