标签: sqlclient

Sql Server是否缓存了跨事务的编译查询和执行计划?

伙计们,

我正在使用准备好的sql语句的最佳实践来执行许多因相同参数而异的插入/更新.我的设计有两个选择:1.所有工作都在一次交易中完成.2.将工作分解为多个事务(不是每个语句一个,而是适合我的环境的并发性).如果我选择#2,SQL是否会利用跨事务的缓存编译查询/执行计划?或者,因为查询是在事务中进行的,所以缓存的生命周期将仅限于事务?

sql-server ado.net sql-server-2005 sqlclient

2
推荐指数
2
解决办法
361
查看次数

System.Data.SqlClient和SQLNCLI10.1提供程序之间有什么区别?

我正在将我的应用程序连接到SQL Server 2008数据库.

以下提供程序之间有什么区别:System.Data.SqlClient提供程序和SQLNCLI10.1(如果有)?

应该使用哪一个连接到SQL Server数据库?为什么?

谢谢,

sql sql-server provider sqlclient

2
推荐指数
1
解决办法
2950
查看次数

线程安全数据访问对象C#

我正在尝试使线程安全的数据访问层(类似于SQL Data Client包装器)。在使性能最大化的同时,我应该采取哪些步骤使此线程安全。

例如,如果我在关闭连接之前在sqlConn上添加了一个锁(因为它实现了IDisposable);如果连接在事务或查询中间怎么办?

总而言之,我正在尝试完成一个线程安全的解决方案。但同时,我不想冒任何重大例外或任何延误的风险。有什么办法可以使结束线程优先

public class SQLWrapper : IDisposable
    {
        private SqlConnection _sqlConn;

        public SQLWrapper(string serverName_, string dbName_)
        {
            SqlConnectionStringBuilder sqlConnSB = new SqlConnectionStringBuilder()
            {
                DataSource = serverName_,
                InitialCatalog = dbName_,
                ConnectTimeout = 30,
                IntegratedSecurity = true,
            };

            sqlConnSB["trusted_connection"] = "yes";

            this.start(sqlConnSB.ConnectionString);
        }

        public SQLWrapper(string connString_)
        {
            this.start(connString_);
        }

        private void start(string connString_)
        {
            if (string.IsNullOrEmpty(connString_) == true)
                throw new ArgumentException("Invalid connection string");

            **lock (this._sqlConn)**
            {
                this._sqlConn = new SqlConnection(connString_);
                this._sqlConn.Open();
            }
        }

        private void CloseConnection()
        { …
Run Code Online (Sandbox Code Playgroud)

c# sql multithreading sqlclient

2
推荐指数
1
解决办法
992
查看次数

使用C#窗口表单应用程序在用户登录期间保存登录时间

现在我试图用C#窗口窗体桌面应用程序获取用户日志.
我试过了

    private void btn_Login_Click(object sender, EventArgs e)
    {
        string username = txt_Username.Text;
        string password = txt_Password.Text;

        if (username=="" && password=="")
        {
            MessageBox.Show("Please enter Username and Password");
        }
        else
        {

            Function.sqlfunction.connection.Open();
            string query = "adminlogin";
            SqlCommand cmd = new SqlCommand(query, Function.sqlfunction.connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@username", username);
            cmd.Parameters.AddWithValue("@pass_word", password);
            int usercount = (Int32)cmd.ExecuteScalar();
            if (usercount == 1)  
            {
                string loginsert = "INSERT INTO tbl_loguser (username, loginTime) VALUES (@username,@time)";
                SqlCommand logcmd = new SqlCommand(loginsert, Function.sqlfunction.connection);
                logcmd.CommandType = CommandType.Text;
                logcmd.Parameters.AddWithValue("@username", username);
                logcmd.Parameters.AddWithValue("@time", DateTime.Now.ToString()); …
Run Code Online (Sandbox Code Playgroud)

c# sqlclient winforms

2
推荐指数
1
解决办法
1345
查看次数

无法使用C#AWS Lambda函数连接到SQL Server Express

尝试通过AWS Lambda连接到我的SQL Server Express RDS实例时出现以下错误System.Data.SqlClient:

"errorType":"PlatformNotSupportedException",
"errorMessage":"此平台不支持该操作.",
"stackTrace":[
"System.Runtime.InteropServices.OSPlatform.get_Windows()",
"at System.Data.SqlClient" .SNI.SNITCPHandle.d__22.MoveNext()"
]

我使用Amazon.Lambda.Tools构建部署包.运行该函数并从本地连接到数据库工作正常,但在尝试在AWS Lambda上运行时失败.

这是我的project.json:

{
"version": "1.0.0-*",
"description": "AWS lambda Console Application",
"authors": [ "" ],
"packOptions": {
    "tags": [],
    "projectUrl": "",
    "licenseUrl": ""
},
"buildOptions": {
    "emitEntryPoint": true
},
"dependencies": {
    "Microsoft.NETCore.App": {
    "type": "platform",
    "version": "1.0.0"
    },
    "Newtonsoft.Json": "9.0.1",
    "Amazon.Lambda.Core": "1.0.0*",
    "Amazon.Lambda.Serialization.Json": "1.0.1",
    "Amazon.Lambda.Tools": {
    "type": "build",
    "version": "1.0.0-preview1"
    },
    "Dapper": "1.50.2",
    "System.Data.SqlClient": "4.3.0"
},
"tools": {
    "Amazon.Lambda.Tools": "1.0.0-preview1"
}, …
Run Code Online (Sandbox Code Playgroud)

sqlclient amazon-rds aws-lambda

2
推荐指数
1
解决办法
1138
查看次数

如何在查询中向没有Id的表中插入数据?

我想知道如何在查询中使用插入命令而不知道 Id 我的表由 Id || 组成 美元|| 用户名和我的表名是 creds

我尝试过执行插入命令,但我无法弄清楚

我只是想知道如何在不知道有多少列的情况下获取 Id,所以假设有 3 列,但我不知道如何创建新列。

ID为主键

INSERT INTO creds VALUES(Id, 50, 'UserName')
Run Code Online (Sandbox Code Playgroud)

c# sql database primary-key sqlclient

2
推荐指数
1
解决办法
2万
查看次数

使用存储过程在数据库中插入列表记录

我有一个使用存储过程插入SQL Server数据库的记录列表.目前我这样做,但还有更好的方法吗?

我在应用程序的高峰时段每秒插入100-200行.存储过程仅获取值并插入新行

    public void InsertRecords(List<stRecord> records)
    {
        foreach (var item in records)
        {
            if (CheckforDuplicateRecord(item) == false)
            {
                using (con = new SqlConnection(connectionString))
                {
                    con.Open();

                    SqlCommand cmd = new    SqlCommand(StoredProcedures.Service_Insert_record.ToString(), con);
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.Add("@item1", SqlDbType.NChar);
                    cmd.Parameters.Add("@item2", SqlDbType.NChar);

                    cmd.Parameters[0].Value = item.localUsername;
                    cmd.Parameters[1].Value = item.BetfairUsername;


                    try
                    {
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception exp)
                    {
                        throw exp;
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures list sqlclient winforms

1
推荐指数
1
解决办法
3097
查看次数

SQLDataReader如何检查空列值?

我正在使用SQLDataReader将列数据插入到字符串[]中.

但是,某些列值为null.我有点不确定如何检查这个,因为当我做reader [column_pos]时它表示值为"n/a".

我可以执行哪些检查,以便我可以执行以下操作:

for(int i=0; i<myarray.Length;i++){
    if(something){
        myarray[i] = reader[i];
    }
    else
    {
        myarray[i] = "";
    }
}
Run Code Online (Sandbox Code Playgroud)

并在列中有空值时插入空白符号.

.net c# ado.net sqlclient

1
推荐指数
1
解决办法
1万
查看次数

SqlDataAdapter,SqlCommand从字符串中删除前导数字

我试图用一个看起来像的where子句执行一个SQL语句

 string s2 = "Select * from idtyfile where oysterid=" + id ;
 SqlCommand da2 = new SqlCommand(s2, con); or 
 SqlAdapter da2 = new SqlAdapter(s2, con);
Run Code Online (Sandbox Code Playgroud)

当我尝试执行它们时,这两个都失败了

da2.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

ID中的数据看起来像

ID
43PCOU5T
ZP6RAEJ0
Run Code Online (Sandbox Code Playgroud)

由于某些原因,这些查询都失败了这些类型的数据.

c# sqlclient

1
推荐指数
1
解决办法
109
查看次数

如何在SqlDataReader中使用Generic

我试图想出一种方法,只是将SQL Server中的表加载到一个类中,而不必告诉它任何东西.基本上,只需创建类并让它知道要加载什么,基于此.这是我到目前为止所拥有的.

我的问题是,是否有一些方法可以避免硬编码类型,调用reader.readString,reader.readInt32等.基于FieldType?

 private Int32? readInt32(SqlDataReader reader, string columnName)
    {
        Int32? result = null;


        if (!reader.IsDBNull(reader.GetOrdinal(columnName)))
        {
            result = reader.GetInt32(reader.GetOrdinal(columnName));
        };

        return result;
    }

  public List<T> readTable(string table, string wherecls, string connStr)
    {
        List<T> result = new List<T>();
        using (SqlConnection connection = new SqlConnection(connStr))
        {
            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = "select * from " + table;
                if (wherecls.Length > 0) command.CommandText += " where " + wherecls;
                connection.Open();
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    { …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection ado.net sqlclient

1
推荐指数
1
解决办法
461
查看次数

如何识别用户取消的SqlException?

因此,我使用 取消了查询SqlCommand.Cancel。Sql 客户端返回了SqlException以下消息:

当前命令发生严重错误。如果有结果,则应丢弃。操作被用户取消。

我没意见。但是,我必须优雅地处理它,因为这不是应该报告的常规错误。问题是,除了消息之外,我发现的对象内没有任何指示符SqlException可以识别它是由用户取消查询引起的。

我不想使用消息本身,因为它可能在某些时候被更改或翻译成另一种语言。ErrorNumber属性为0Class属性为11

sql-server ado.net sqlclient

0
推荐指数
1
解决办法
1742
查看次数

使用SQL插入表格时出错

如果这是一个重复的问题,我道歉,但我似乎无法找到我的特定问题.根据我的错误,我知道我的INSERT语句中的变量没有被分配,但是我发现的每个其他示例都显示哪个变量有问题,而且我的问题,似乎没有变量获得值?

private void insertListIntoSQL(List<string[]> authList)
{
      string connectionstring;  //Connection String Info
      SqlConnection cnn = new SqlConnection(connectionstring);
      cnn.Open();

       authList.RemoveAt(0);
       foreach(string[] auth in authList)
       {

        SqlCommand updateTable = new SqlCommand("INSERT INTO AuthSubmitAppLog (RECEIVED, STATUS_COMMENTS, AUTHORIZATION_NUMBER, CASE_MANAGER, ENTER_DATE, UPDATE_DATE, COMPLETED_BY, COMPLETED_DATETIME, CONTRACT_ENROLL_DATE, CONTRACT_DISENROLL_DATE, DIAGNOSIS_CODE, AUTHORIZATION_TYPE, AUTHORIZATION_TYPE_DETAIL, MEMBER_NAME, MEMBER_ID, MEMBERSHIP_ID, MEMBER_ADDRESS_1, MEMBER_ADDRESS_2, MEMBER_CITY, MEMBER_STATE, MEMBER_ZIP, REGION, MEMBER_PHONE, LINE_OF_BUSINESS, MEDICAID_NUMBER, MEDICARE_NUMBER, MEDICARE_TYPE, VENDOR_NAME, MCO_PROVIDER_NAME, LOCATION_ID, EFFECTIVE_DATE, EXPIRATION_DATE, SERVICE_CATEGORY, DETAIL_NUMBERS, SERVICE_CODE, MODIFIER_1, MODIFIER_2, MODIFIER_3, MODIFIER_4, SUNDAY_UNITS, MONDAY_UNITS, TUESDAY_UNITS, WEDNESDAY_UNITS, THURSDAY_UNITS, FRIDAY_UNITS, SATURDAY_UNITS, TOTAL_UNITS, NOTES_TO_PROVIDER, CASE_TYPE, STATUS, …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server sqlclient

-1
推荐指数
1
解决办法
119
查看次数

System.Data.SqlClient.SqlException:'必须声明标量变量'

我检查了其他具有相关错误的线程,但是在特定级别上它们均与我的问题无关。

我正在尝试通过WPF表单中的TextBox编辑来更新数据,并通过“更新按钮”提交到SQL数据库。打开表单并选择用户时,将加载初始/当前数据。它会在SQL数据库的相应文本框中显示与它们有关的所有信息,当我想更改已加载的信息并更新它时,问题就产生了。

在“ da.UpdateCommand.ExecuteNonQuery();”行中 它抛出了一个错误,即尚未声明@FirstName的标量变量,但是在注释掉它时,它仅移至下一行,并且将继续运行。因此,它与任何一个参数都不相关。

我仔细检查了数据库中所有数据类型是否正确,并确保没有键入错误(尽管有可能我错过了一种输入错误)。

我对任何可能导致这种情况的想法都表示赞赏,我一直在与它碰壁。

void UpdateEmployee()
    {
        using (SqlConnection con = new SqlConnection(Properties.Settings.Default.adminConnectionString))
        { 
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter
            {
                UpdateCommand = new SqlCommand("UPDATE dbo.EMPLOYEES " +
                "SET FirstName = @FirstNameCL, " +
                "InsuranceDate = @InsuranceDateCL, " +
                "InsurancePlan = @PlanCL, " +
                "InsuranceStatus = @StatusCL, " +
                "InsuranceElig = @EligibleCL" +
                "Department = @Dpt, " +
                "LastName = @LastNameCL, " +
                "DateOfFullTime = @FullTimed, " +
                "DateOfHire = @startdate, " + …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqlclient

-1
推荐指数
1
解决办法
57
查看次数