[英]SqlConnection in VS2015 C#
我对 C# web 开发(或任何与此相关的开发)非常陌生,但我试图弄清楚如何将 SQL 查询的结果保存到变量中。 我想我理解这个过程,但是我在网上找到的许多例子都使用了 SqlConnection 语句。 我的 Visual Studio 副本似乎没有该命令(很确定我在这里使用了错误的词)。 我在软件方面或知识方面缺少什么来完成我的任务?
预先感谢您的帮助。 部
这取决于您想要做什么:插入、更新、获取数据。 这也取决于您是否想使用 ORM 库。 我都取决于。 我在下面复制的代码是如何使用 Ado.Net 检索数据表的示例(如您提到的 SqlConnection):
你必须使用:
using System.Data;
using System.Data.SqlClient;
这是检索数据表的代码
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();
}
}
这是我能想到的最简单的例子,注意 using 语句和注释
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();
}
}
}
如果您真的不熟悉使用 SQL Server 的 C#,我建议您使用此处显示的教程之一从头开始。 它以循序渐进的方式提供了大量信息:
以及更多。
使用SqlConnection
是一个有效的选择,但需要更多的努力来编写查询来执行基本的操作,例如选择、更新、删除或插入数据。 您实际上必须构建查询并注意构建和处理命令。
在相关说明中:
在 C# 或 .NET 中执行所有与数据库相关的活动的新方法是利用实体框架 (EF),并尝试远离任何基于 ADO.NET 的代码。 不过,后者仍然存在并且没有被标记为过时。 您可能希望将 ADO.NET 用于小型应用程序或任何 PoC 任务。 但是,否则,EF 是要走的路。
EF 是一个 ORM,确实是作为存储库模式构建的,并生成一个概念层供我们使用。 连接和命令的所有细微差别都完全由我们封装。 这样,我们就不必干预这些基本框架。
如果你想做得好,你必须在你的项目中编辑一个名为 Web.config 的文件,并将这样的内容放入其中(使用你自己的数据库数据):
<connectionStrings >
<add
name="myConnectionString"
connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
然后,在代码中,您可以将其用于:
SqlConnection con = new SqlConnection(
WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);
最后,您可以使用“con”执行您想要的操作,例如:
string queryString = "SELECT name, surname FROM employees";
SqlCommand command = new SqlCommand(queryString, con);
con.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
reader["name"], reader["surname"]));
}
}
finally
{
reader.Close();
}
我使用这个 nuget 库。 https://www.nuget.org/packages/SqlServerDB_dotNET/
using SqlServerDB;
string server = @"INSTANCE\SQLEXPRESS";
string database = "DEMODB";
string username = "sa";
string password = "";
string connectionString = @"Data Source="+ server + ";Initial Catalog="+ database + "; Trusted_Connection=True;User ID="+ username + ";Password="+ password + "";
DBConnection db_conn = new DBConnection(connectionString);
Console.WriteLine("IsConnected: " + db_conn.IsConnected());
if (db_conn == null || !db_conn.IsConnected())
{
Console.WriteLine("Connessione non valida.");
return;
}
string sql = "SELECT ID, Message FROM Logs ORDER BY IDLic;";
DataTable dtLogs = db_conn.SelectTable(sql);
if (dtLogs == null || dtLogs.Rows.Count == 0)
return;
// Loop with the foreach keyword.
foreach (DataRow dr in dtLogs.Rows)
{
Console.WriteLine("Message: " + dr["Message"].ToString().Trim());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.