我正在寻找一个C#SQL Server包装器来调用一些存储过程.如果我正在写一个函数,我会做类似下面的事情(我认为是正确的/正确的):
void RunStoredProc1(object arg1)
{
using(SqlConnection conn = new SqlConnection(connStr)){
try{
SqlCommand cmd = new SqlCommand("storedProc1", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@input1", arg1);
conn.Open();
cmd.ExecuteNonQuery();
} catch (Exception ex){
//handle the exception appropriately.
}
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是它似乎有很多重复的代码......每个函数都有相同的using/try(打开/执行)/ catch代码,而且只需要一个就可以了地点.这样做有干净的方法吗?对于我想要使用数据读取器的查询怎么样?
请帮我加快桌面上的UPDATE操作.表具有唯一ID,用于查找记录和UPDATE其字段.表中有1M条记录.没有使用索引.只有唯一的ID.插入需要一些时间..我预期毫秒.
表结构:
create table customers
(
id int IDENTITY(1,1) UNIQUE NOT NULL,
phonenum varchar(15) UNIQUE NOT NULL,
date datetime,
company varchar(150),
full_name varchar(150),
address varchar(150),
street varchar(100),
zip varchar(100),
city varchar(100),
info varchar(300),
op_data varchar(150),
op_date datetime,
op_user_taken varchar(100),
op_time_taken datetime,
op_status varchar(100),
user_taken varchar(100),
time_taken datetime,
status varchar(100),
);
Run Code Online (Sandbox Code Playgroud)
我正在使用SqlConnection System.Data.SqlClient.SqlConnection和ExecuteNonQuery方法来更新记录.
我的表需要重新设计还是ExecuteNonQuery这么慢?
编辑:更新命令:
"UPDATE customers SET user_taken=@param1, time_taken=@param2,
date=@param3, company=@param4, full_name=@param55,
address=@param6, street=@param8, zip=@param9,
city=@param10, info=@param11 , status=\'Completed\',
op_data=@param12 WHERE id=@param7";
Run Code Online (Sandbox Code Playgroud) 问题是我使用了我SqlConnection作为公共静态连接,认为这可能是导致错误时间的问题:
*连接未打开或连接已打开
那么SqlConnection在静态类中使用一个语句是否可以?
所以我只能宣告它一次,我知道我可以使用connectionString它web.config
ConfigurationManager.ConnectionStrings["conn"].ConnectionString ...
Run Code Online (Sandbox Code Playgroud)
但我喜欢它与web.config设置或服务器名称无关.
因为它确实是同一个类中的两个方法,也是该主类中的另一个类,但这不是重要的,而是对所有执行使用相同的连接!所以你说即使我用我的帮助者类的正确代码编辑,这是错的?
public static class myDBhelper
{
public static SqlConnection Conn = new SqlConnection ("server=(local);Initial Catalog=dbName;Integrated Security=True");
public static int ExecSQLint(string TblintSQL)
{
int anIntValue=0;
SqlCommand TblintCMD = new SqlCommand(TblintSQL, Conn);
try
{
Conn.Open();
anIntValue = Convert.ToInt32(TblintCMD.ExecuteScalar());
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception("No Can Do: " + ex.Message);
}
finally
{
Conn.Close();
}
return anIntValue;
}
public static string ExecSQLstring(string …Run Code Online (Sandbox Code Playgroud) 您好我在运行SqlConnection的类中有这个代码:
using System.Data.SqlClient;
using System.IO;
namespace tours
{
class myConnection
{
public static SqlConnection GetConnection()
{
string path = "C:\\Users\\marek\\Documents\\Visual Studio 2012\\Projects\\tours\\tours\\sql_string.txt";
StreamReader sr = new StreamReader(File.Open(path, FileMode.Open));
string str = "Data Source='" + sr.ReadLine() + "';Initial Catalog ='" + sr.ReadLine() + "' ;User ='" + sr.ReadLine() + "';Password = '" + sr.ReadLine() + "'";
SqlConnection spojeni = new SqlConnection(str);
spojeni.Open();
return spojeni;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在其他形式我得到SqlCommand或SqlDataAdapter我需要添加到他们SqlConnection,但不知道我怎么能访问它们?你能告诉我什么吗?例如:
DataTable dt = new DataTable();
SqlDataAdapter SDA …Run Code Online (Sandbox Code Playgroud) 我试图在我的查询中添加一个参数,并在这样做时它给了我上面的错误.我有变量public我声明在外面或我的方法.我尝试将其设置为静态,因为我已阅读其他帖子但它然后它给了我其他所引用的错误.方法我在公共静态列表方法中工作.
采取的步骤:尝试在我的方法中声明变量t将变量传递给.在线研究测试在线研究.
这是我声明的变量:
public int CarrierID { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是我的方法,我试图添加参数,它在CarrierID cmd.Parameters.AddWithValue("CarrierID",CarrierID)给我错误的位置; :
SqlConnection dbConn = new
SqlConnection(ConfigurationManager.ConnectionStrings
["Connection"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sqlString.ToString();
cmd.Parameters.AddWithValue("CarrierID", CarrierID);
SqlDataReader reader = null;
try
{
reader = DBHelper.executeQuery(dbConn, sqlString.ToString(), null);
if (reader != null)
{
while (reader.Read())
{
EmpData ed = new EmpData();
ed.CarrierID = (int)reader["CarrierID"];
list.Add(ed);
}
Run Code Online (Sandbox Code Playgroud)
empData类:
class EmpData
{
public int EmployeeID { get; set; }
public string FName { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 当我用于连接时,我知道没有必要使用close或dispose.我想知道,我们需要使用开放吗?
using (var dbSqlConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString1"]))
{
dbSqlConnection.Open(); // is this required?
}
Run Code Online (Sandbox Code Playgroud) 我真的不知道我的Insert语句有什么问题,它包含了未处理的用户代码.与其他在线教程相比,我在cmd上的插入看起来很好.
public void retrieveData()
{
SqlConnection(ConfigurationManager.ConnectionStrings[sqlconnectiostring].ToString())
SqlConnection conn = new SqlConnection();
try
{
using (conn = new SqlConnection(sqlconnectiostring))
{
conn.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO FRUITSPRODUCT(@PRODUCTNAME,@PRODUCTTYPE,@Total) VALUES (@PRODUCTNAME,@PRODUCTTYPE,@Total)",conn);
cmd.Parameters.AddWithValue("@PRODUCTNAME","atlegang");
cmd.Parameters.AddWithValue("@PRODUCTTYPE","baby");
cmd.Parameters.AddWithValue("@Total","10");
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null)
{
conn.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud) 尝试将一个集合插入到SQL Server 2014中的表中.这是我执行的代码而没有错误但是当我检查我的表时 - 没有添加任何内容.我的集合对象orders不是空的,我可以看到它在调试时有3个成员.
IEnumerable<CompleteOrderDetails> orders;
JoinDetails(doc, ns, xmlFragment1, out orders);
string connectionstring = null;
SqlConnection conn;
connectionstring = "Data Source = DANNY; Initial Catalog = Alliance; Integrated Security = SSPI";
using (conn = new SqlConnection(connectionstring))
{
string customerInsert = "INSERT INTO AmazonCustomer (AddressLine1, AddressLine2, AddressLine3, City, StateOrRegion, AmazonOrderId, PostalCode, Title, ItemPrice, ShippingPrice, Quantity) " +
"VALUES (@AddressLine1, @AddressLine2, @AddressLine3, @City, @StateOrRegion, @AmazonOrderId, @PostalCode, @Title, @ItemPrice, @ShippingPrice, @Quantity)";
using (SqlCommand query = new SqlCommand(customerInsert))
{
query.Connection = …Run Code Online (Sandbox Code Playgroud) 在我的程序中,我有两个文本输入字段(在窗体中)和一个按钮,用于将这些值添加/保存到数据库表中.问题是,一旦我点击按钮,它就不会将输入插入数据库,而是显示我在下面作为图像附加的错误.
我的计划有什么问题?
我的工作代码:
public partial class Form1 : Form
{
//original Connection string is exactly the following:
//Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C:\Users\Sanad Al Nahaj\Documents\thesaurus.mdf";Integrated Security=True;Connect Timeout=30
SqlConnection conn = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename=C:\Users\Sanad Al Nahaj\Documents\thesaurus.mdf;Integrated Security = True; Connect Timeout = 30");
public Form1()
{
InitializeComponent();
}
//Save button
private void button1_Click(object sender, EventArgs e)
{
conn.Open();//error pops up here after clicking the button
SqlCommand command = conn.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = "insert into Table values('"+wordbox.Text+"','"+synonymbox.Text+"')";
command.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Word and …Run Code Online (Sandbox Code Playgroud) 我无法通过 C# 连接到我的数据库,这让我抓狂。
我知道我的凭据很好,因为我可以使用它们打开 SQLServerMangement 并查询数据库。
我总是登录失败!!
我正在尝试使用大量不同的连接字符串,但没有任何效果。
--> System.Data.SqlClient.SqlException (0x80131904): 用户登录失败
var connectionStrings = new List<string>();
connectionStrings.Add("Data Source=myserver;Initial Catalog=mycatalog;User ID=myuser;Password=mypassword");
connectionStrings.Add("Data Source=myserver;Initial Catalog=mycatalog;User ID=mydomain/myuser;Password=mypassword");
connectionStrings.Add("Data Source=myserver;Initial Catalog=mycatalog;User ID=mydomain\\myuser;Password=mypassword");
connectionStrings.Add("Data Source=myserver;Initial Catalog=mycatalog;User ID=mydomain\\\\myuser;Password=mypassword");
connectionStrings.Add("Data Source=myserver;Initial Catalog=mycatalog;User ID=mydomain//myuser;Password=mypassword");
connectionStrings.Add("Data Source=myserver;Initial Catalog=mycatalog;User ID=mydomain\\myuser;Password=mypassword");
foreach (var con in connectionStrings)
{
SqlConnection cnn ;
cnn = new SqlConnection(con);
try
{
cnn.Open();
Console.WriteLine("Connection Open !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ");
cnn.Close();
}
catch (Exception ex)
{
Console.WriteLine("Can not open connection ! ");
//Console.WriteLine(ex.ToString());
}
}
Run Code Online (Sandbox Code Playgroud) c# ×10
sqlconnection ×10
sql-server ×5
sql ×2
sqlcommand ×2
.net ×1
database ×1
sql-insert ×1
variables ×1