我对SQL开发(或任何开发)都非常陌生,但我正在尝试如何将C#查询的结果保存到变量中。我想我理解这个过程,但我在网上找到的许多示例都使用SqlConnection语句。我的Visual Studio副本似乎没有这个命令(我很确定我在这里用错了词)。无论是在软件方面还是在知识方面完成我的任务,我都遗漏了什么?
提前感谢您的帮助。环境保护局
发布于 2017-01-06 03:34:12
这取决于您想要做什么:插入、更新、获取数据。它还取决于您是否要使用ORM库。我都看情况了。下面我复制的代码是如何使用Ado.Net检索DataTable的示例(正如您提到的SqlConnection):
你必须使用:
using System.Data;
using System.Data.SqlClient;这是用于检索DataTable的代码
private DataSet ExecuteDataset(string query)
{
var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
DataSet ds;
try
{
conn.Open();
ds = new DataSet();
var da = new SqlDataAdapter(query, conn);
da.Fill(ds);
}
catch (Exception)
{
throw;
}
finally
{
conn.Dispose();
conn.Close();
}
return ds;
}
private DataSet ExecuteDataset(string query, SqlParameter[] parametros)
{
var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
DataSet ds;
try
{
conn.Open();
SqlCommand command = conn.CreateCommand();
command.CommandText = query;
foreach (SqlParameter p in parametros)
{
command.Parameters.Add(p);
}
ds = new DataSet();
var da = new SqlDataAdapter(command);
da.Fill(ds);
}
catch (Exception)
{
throw;
}
finally
{
conn.Dispose();
conn.Close();
}
return ds;
}以下代码用于运行不需要带参数和不带参数的结果的查询:
private void ExecuteNonQuery(string query)
{
var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
try
{
conn.Open();
SqlCommand command = conn.CreateCommand();
command.CommandText = query;
command.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
conn.Dispose();
conn.Close();
}
}
private void ExecuteNonQuery(string query, SqlParameter[] parametros)
{
var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
try
{
conn.Open();
SqlCommand command = conn.CreateCommand();
command.CommandText = query;
foreach (SqlParameter p in parametros)
{
command.Parameters.Add(p);
}
command.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
conn.Dispose();
conn.Close();
}
}发布于 2017-01-06 04:21:04
这是我能想到的最简单的例子,请注意使用语句和注释
using System;
using System.Data;
using System.Data.SqlClient;
namespace DataAccess
{
class Program
{
static void Main(string[] args)
{
//Use your database details here.
var connString = @"Server=localhost\SQL2014;Database=AdventureWorks2012;Trusted_Connection=True;";
//Enter query here, ExecuteScalar returns first column first row only
//If you need to return more records use ExecuteReader/ExecuteNonQuery instead
var query = @"SELECT [AccountNumber]
FROM [Purchasing].[Vendor]
where Name = @Name";
string accountNumber = string.Empty;
//Using statement automatically closes the connection so you don't need to call conn.Close()
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(query, conn);
//Replace @Name as parameter to avoid dependency injection
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@name"].Value = "Michael";
try
{
conn.Open();
//Cast the return value to the string, if it's an integer then use (int)
accountNumber = (string)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Console.WriteLine(accountNumber);
//ReadKey just to keep the console from closing
Console.ReadKey();
}
}
}发布于 2017-01-06 04:00:43
如果您对使用SQL Server的C#非常陌生,我建议您使用here中显示的教程之一从头开始。它以一步一步的方式提供了大量信息:
还有更多。
使用SqlConnection是一个有效的选择,但需要更多的精力来编写查询,以执行基本的操作,如选择、更新、删除或插入数据。实际上,您必须构造查询,并小心地构建和处置命令。
https://stackoverflow.com/questions/41493175
复制相似问题