我有一个类似于下面的代码片段,我想将其重构为两个不同的函数,每个函数都有自己的连接(为了更好的维护):
Dim Conn, Sql, RS
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString
Sql = SELECT * FROM CLIENTS
Set RS = Conn.Execute(sql)
//'Do something with Clients
Set RS = Nothing
Sql = SELECT * FROM DEALERS
Set RS = Conn.Execute(sql)
//'Do something with Dealers
Set RS = Nothing
Conn.Close
Set Conn = Nothing
Run Code Online (Sandbox Code Playgroud)
是否有两个函数(例如 GetClients 和 GetDealers)分别打开和关闭它们自己的连接会对性能产生重大影响,与仅打开和关闭单个连接相反,如上图所示?如果是这样,您将如何重构代码?
我有一个简单的创建一个新的用户表单,它从两个文本框中获取值,用户名和密码。button2 单击事件应该采用这些值并将它们插入到数据库中的用户表中。但是,当我运行我的代码时,消息框似乎说数据已添加,我无法使用 VS2010 在数据库中看到数据。
请参阅 VS 中数据库连接的屏幕截图。我还在 VS 中创建了数据库的数据源。
有任何想法吗?
非常感激。
private void button2_Click(object sender, EventArgs e)
{
string username = txtUsername.Text;
string password = txtPassword.Text;
string sqlquery;
string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\Nick\Documents\Visual Studio 2010\Projects\DebenhamsProjectOffice V.01\DebenhamsProjectOffice V.01\DebenhamsProjectOfficeDatabase.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection cn = new SqlConnection(connection);
try
{
cn.Open();
}
catch (Exception)
{
MessageBox.Show("Unable to connect to Database");
}
sqlquery = "INSERT INTO Users (Username, Password) VALUES ('" + txtUsername.Text + "','" + txtPassword.Text + "')";
try
{
SqlCommand command = …Run Code Online (Sandbox Code Playgroud) protected void populateDataGrid()
{
string connectionString = configurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
string command = "select * from student";
SqlDataAdapter dataAdapter = new SqlDataAdapter(command, connectionString);
DataSet data = new DataSet();
dataAdapter.Fill(data);
GridView1.DataSource = data;
GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
string connectionString = ConfigurationManager.ConnectionStrings["sqlstudentConnectionString"].ConnectionString;
string command = @"INSERT INTO [student] (studentID, studentFirstName, studentLastName)
VALUES (" + TextID.Text + ", '" + TextFirstName.Text + "', '" + TextLastName.Text + "')";
SqlConnection sqlConnection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码对Azure数据库执行SQL命令。我在ASP.NET MVC操作方法内进行了两次调用。一个从表A中删除,第二个调用从表B中删除。
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(ConnectionString))
{
using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
{
conn.Open();
command.CommandText = statement;
command.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
无论出于什么原因,当我第二次调用此代码时(将其放在Helper服务类中,它都会爆炸并显示以下Azure错误。
Additional information: Login failed for user 'MyUser'.
Run Code Online (Sandbox Code Playgroud)
是否有我没有正确执行的操作,但是可能无法关闭连接,或者Azure对此有问题?
我是网络开发的新手,并且通过浏览论坛,我已经成功完成了很多问题.
看来,我遇到的问题是其他一些问题,我发现它们都是不同的,只是没有为我的生活能够解决它.
我试图将播放器注册详细信息插入到数据库中,但是当我尝试调用wcf服务器时,我遇到了conn.Open()上的异常类型:
System.Data.dll中出现"System.Data.SqlClient.SqlException"类型的异常,但未在用户代码中处理.
另外我使用构建它的sql server并且使用的连接字符串是数据库中的属性.我不太清楚如何继续.
public string playerRegistration(playerDetails playerInfo)
{
string Message;
using (SqlConnection conn = new SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\\Users\\Daniel\\documents\\visual studio 2013\\Projects\\Prac4\\WebApplication1\\App_Data\\ADODatabase.mdf;Integrated Security=True"))
{
conn.Open();
using (var cmd = new SqlCommand("INSERT into Player(pid, pfname, plname, pphone, paddress, pdob) VALUES (@pid, @pfname, @plname, @pphone, @paddress, @pdob)", conn))
{
cmd.Parameters.AddWithValue("@pid", playerInfo.Pid);
cmd.Parameters.AddWithValue("@pfname", playerInfo.Pfname);
cmd.Parameters.AddWithValue("@plname", playerInfo.Plname);
cmd.Parameters.AddWithValue("@pphone", playerInfo.Pphone);
cmd.Parameters.AddWithValue("@paddress", playerInfo.Paddress);
cmd.Parameters.AddWithValue("@pdob", playerInfo.Pdob);
int result = cmd.ExecuteNonQuery();
if (result == 1)
{
Message = " Details inserted successfully";
}
else
{
Message = " …Run Code Online (Sandbox Code Playgroud) 我在C#中有一个程序,我创建了各种类,所有这些都需要调用数据库.所以我决定创建一个静态类来处理所有调用,以便我可以非常轻松地应用深远的变化.在那个类中,我有调用SqlCommand(ExecuteReader()等等)各个部分的函数我最终厌倦了重写所有的连接代码,并将它抽象到另一个函数中getSqlCommand(),该函数只返回一个初始化的函数SqlCommand,用于执行各种命令.我选择不将其传递SqlCommand回其他程序(虽然它是一种公共方法,以防万一我需要它),因为如果你在将结果返回给程序之前我会做一些预处理.
我的问题是,如果/何时SqlConnection关闭?因为它作为a中的返回值被传回SqlCommand,它会保持打开状态吗?如果是的话,我可以关闭吗?这是一些代码(略微剥离),所以你可以看到我在做什么,提前谢谢!
创建的功能SqlCommand:
public static SqlCommand GetSqlCommand(string query)
{
using (SqlConnection dbConnection = new SqlConnection( SQLConn )) {
dbConnection.Open();
SqlCommand cmd = new SqlCommand( query, dbConnection );
cmd.CommandTimeout = 0;
return cmd;
}
}
Run Code Online (Sandbox Code Playgroud)
静态类中命令用法的示例:
public static SqlDataReader executeReader( string query )
{
try {
return GetSqlCommand(query).ExecuteReader();
} catch (SqlException) {
//Notify User and Resolve Error
}
return null;
}
Run Code Online (Sandbox Code Playgroud) 我尝试在类的析构函数中关闭连接,以确保如果我忘记关闭它 - 它会自动关闭,并引发异常。
我搜索了一下,发现这是不可能的。
现在我尝试关闭它两次 - 并且它有效!
但我想知道这是否是一个好的解决方案。你怎么认为?
这是代码
public class MyCommand : IDisposable
{
public readonly DbCommand command;
public MyCommand(string ConnectionString, DbProviderFactory factory)
{
var tempConnexion = factory.CreateConnection();
tempConnexion.ConnectionString = ConnectionString;
tempConnexion.Open();
var t = tempConnexion.BeginTransaction(IsolationLevel.ReadCommitted);
command = tempConnexion.CreateCommand();
command.Connection = tempConnexion;
command.Transaction = t;
}
public MyCommand(string ConnectionString, DbProviderFactory factory, string requete)
: this(ConnectionString, factory)
{
command.CommandText = requete;
}
public MyCommand(string ConnectionString, string provider)
: this(ConnectionString, DbProviderFactories.GetFactory(provider)) { }
public MyCommand(string ConnectionString, string provider, string …Run Code Online (Sandbox Code Playgroud) 所以我有一个登录页面,我必须实现一个验证:'如果用户是“sa”,那么它应该使用该用户凭据连接到数据库',这意味着我必须修改我的SqlConnection对象的凭据:
if(username.Equals("sa", StringComparison.OrdinalIgnoreCase))
{
var securePassword = new System.Security.SecureString();
foreach(char character in password)
{
securePassword.AppendChar(character);
}
securePassword.MakeReadOnly();
var credentials = new SqlCredential(username, securePassword);
sqlConn.Close();
sqlConn.Credential = credentials;
sqlConn.Open();
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个例外,sqlConn.Credential = credentials;即使该财产不是readonly
InvalidOperationException:不能将凭据与用户 ID、UID、密码或 PWD 连接字符串关键字一起使用。
有没有其他方法可以更改Credentials属性?
提前致谢。
SqlDataReader rdr = null;
con = new SqlConnection(objUtilityDAL.ConnectionString);
using (SqlCommand cmd = con.CreateCommand())
{
try
{
if (con.State != ConnectionState.Open)
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(Parameter);
cmd.CommandText = _query;
rdr = cmd.ExecuteReader();
}
catch (Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,sqlconnection在托管代码中打开.因此,在结束USING的范围时,是否会自动处理连接对象?
我是powerbuilder 12.5的新手,我无法在SQL 2008上找到关于数据库管理的很多教程.我需要通过VB.NET vs2008中的代码连接到它
Dim con As New SqlConnection Con.connectionstring ="Data Source = servername; Initial Catalog = user; Integrated Security = True"
我需要选择,插入,更新和删除数据...代码示例的任何帮助
sqlconnection ×10
c# ×8
sql-server ×4
asp.net ×3
ado.net ×2
.net ×1
ado ×1
asp-classic ×1
azure ×1
insert ×1
powerbuilder ×1
return-value ×1
sql ×1
sqlcommand ×1
wcf ×1
winforms ×1