C# 执行SQL查询c
代码如下:C# 执行SQL查询c,c#,sql,tsql,C#,Sql,Tsql,代码如下: con.SqlQuery(" SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME"); con.NonQueryEx(); 以及用于连接和查询的类: public SqlConnection conn; public SqlCommand
con.SqlQuery(" SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME");
con.NonQueryEx();
以及用于连接和查询的类:
public SqlConnection conn;
public SqlCommand cmd;
public SqlDataAdapter da;
public DataTable dt;
public DataSet ds;
public void SqlDbConnect()
{
SqlConnection conn = new SqlConnection($"Data Source={server};User ID={user};Password={password};");
conn.Open();
}
public void SqlQuery(string queryText)
{
cmd = new SqlCommand(queryText, conn);
}
public DataTable QueryEx()
{
da = new SqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
return dt;
}
public void NonQueryEx()
{
cmd.ExecuteNonQuery();
}
但cmd.ExecuteNonQuery有问题;
有人能帮忙解决这个问题吗?
尝试不同的查询,但仍然是相同的…问题在您的类SqlDbConnect中。您有一个字段public SqlConnection conn,但在构造函数中创建了一个类型为SqlConnection的新变量,并将其打开。在构造函数中,需要使用“类”字段:
public SqlConnection conn;
public SqlCommand cmd;
public SqlDataAdapter da;
public DataTable dt;
public DataSet ds;
public void SqlDbConnect()
{
conn = new SqlConnection($"Data Source={server};User ID={user};Password={password};");
conn.Open();
}
public void SqlQuery(string queryText)
{
cmd = new SqlCommand(queryText, conn);
}
public DataTable QueryEx()
{
da = new SqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
return dt;
}
public void NonQueryEx()
{
cmd.ExecuteNonQuery();
}
此外,如果要选择数据,则不能使用ExecuteOnQuery。相反,最好使用QueryEx方法,该方法返回一个DataTable:
例外情况是什么?cmd.ExecuteNonQuery有问题您有什么问题?ExecuteNonQuery用于更新、删除或插入。不适用于示例中的SELECT。请在此处使用ExecuteReader。ExecuteOnQuery用于插入、删除或更新记录。你能给我看一下代码吗?对不起,我是新来的,我还在学习。没问题。每个人都必须从某个地方开始!我已经更新了我的答案。第一个代码示例是类SqlDbConnect的更正版本,第二个使用您的查询并将结果存储在数据表中。也许我忘记了MainWindows.xaml.cs中代码中的这一行:private Connection con;你能给我看看MainWindow.xaml.cs的完整代码吗?把它改成私有的SqlDbConnect con=newsqldbconnect;
con.SqlQuery("SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME");
DataTable dt = con.QueryEx();