Tag: sql server

SqlConnection如何管理IsolationLevel?

这篇MSDN文章指出: 隔离级别具有连接范围范围,并且一旦设置为与SET TRANSACTION ISOLATION LEVEL语句的连接,它将保持有效,直到连接关闭或设置了另一个隔离级别。 关闭连接并返回到池时,将保留最后一个SET TRANSACTION ISOLATION LEVEL语句的隔离级别。 重新使用池连接的后续连接使用在连接池时生效的隔离级别。 SqlConnection类没有可以保持隔离级别的成员。 那么连接如何知道在哪个隔离级别运行? 我问这个的原因是因为以下情况: 我在Serializable模式下使用TransactionScope打开了一个事务,比如“T1”。 打开T1的连接。 T1完成/处理,连接返回连接池。 在同一连接上调用另一个查询(从连接池获取后),此查询以可序列化模式运行! 问题: 汇集连接如何知道与之相关的隔离级别? 如何将其还原回其他一些事务级别??? 解析度: 池化连接返回可序列化隔离级别的原因是由于以下原因: 你有一个连接池(让我们说CP1) CP1可能有50个连接。 从CP1中选择一个连接C1并使用Serializable执行它。 此连接现在已设置其隔离级别。 无论您做什么,都不会重置(除非此连接用于执行不同隔离级别的代码)。 执行查询后,C1(Serializable)返回CP1。 如果再次执行步骤1-4,则使用的连接可能是除C1之外的其他连接,假设为C2或C3。 因此,它的隔离级别也将设置为Serializable。 因此,慢慢地,Serialzable在CP1中设置为多个连接。 当您执行未进行显式隔离级别设置的查询时,从CP1选择的连接将决定隔离级别。 例如,如果此类查询请求连接并且CP1使用C1(Serializable)执行此查询,则此查询将在Serializable模式下执行,即使您未明确设置它。 希望能够澄清一些疑惑。 🙂

会计数据库 – 存储交易

您创建一个游戏网站,用户可以在其中购买游戏积分,并将资金存入/存入用户的虚拟账户以进行某些游戏等等。 1 如果你有一个会计师来记录交易,它会被记录下来(可能有点复杂,但你明白了) TRANSACTION PK_ID1 Cash – $10 (System) PK_ID2 Deposit $10 (System) TRANSACTION PK_ID3 Bank Account – $10 (John) PK_ID4 Deposit $10 (John) 2 作为开发人员,您真的需要浪费2个额外的记录吗? 为什么不这样记录呢…(然后你可能会存储资金来自哪里,在同一存款记录下的其他栏目中的状态) TRANSACTION PK_ID1 Cash – $10 (system) PK_ID2 Deposit $10 (John) 选项#1优于选项#2和副签证是否有任何真正的优势? 编辑:修改过的问题,删除了CR,DR并用符号替换。

从SQL Server 2005中提取.NET程序集

我正在尝试帮助个人朋友(现在也是客户)与SQL CLR相关的问题。 他有一个SQL Server,其数据库中嵌入了3个.NET程序集。 他让我帮他从数据库中提取程序集并将它们保存为磁盘上的.dll文件。 这有可能吗?

获取entity framework6在其下面的SELECT语句中使用NOLOCK

我在MVC 5项目中使用Entity Framework 6。 如您所知,如果我们在其中使用WITH (NOLOCK) ,则SQL Server中的SELECT查询执行速度更快,效率更高。 我查看了Entity Framework 6生成的一些SQL SELECT语句,并意识到它们都不包含NOLOCK。 我不想在我的提取操作中使用事务来读取未提交的事务。 如何在下面生成的SELECT语句中强制使用EF 6来使用NOLOCK?

LINQ to SQL:无法在LINQ查询中使用SQL Server UDF

我在做LINQ到Sql。 为了获得良好的性能,我正在尝试过滤SQL Server端本身的一些记录。 所以我想在我的数据库中使用用户定义的函数(UDF) GiveWordCount 。 基于这篇文章,我正在尝试在C#端使用该UDF。 声明一个虚函数体,以便C#代码可以编译: [Function(Name = “dbo.GiveWordCount”, IsComposable = true)] public static int GiveWordCount([Parameter(Name=”@inputValue”,DbType=”nvarchar(4000)”)]string inputValue) { throw new NotSupportedException(“Direct calls are not supported.”); } 然后我在LINQ查询中调用此函数,如下所示。 在最终SQL查询被触发到数据库之前,调用’GiveWordCount’函数应该由LINQ转换为Sql提供程序到等效的内置sql server函数。 相反,它会导致错误: 方法’Int32 GiveWordCount(System.String)’没有支持的SQL转换。 这是我的主要function: static void Main(string[] args) { DataContext dataContext = new DataContext(“data source=.;initial catalog=businessLinqToSql;integrated security=True;MultipleActiveResultSets=True”); Table customers = dataContext.GetTable(); IEnumerable b = […]

如何使用ComboBox过滤DataGridView

我需要帮助使用ComboBox过滤我的DataGridView 这是我的显示代码 cm = new SqlCommand(); cn = new SqlConnection(lgn.connections); cn.Open(); cm.Connection = cn; query = “Select * from Trails”; cm.CommandText = query; SqlDataAdapter dar = new SqlDataAdapter(cm); DataTable dt = new DataTable(); dar.Fill(dt); dataGridView1.DataSource = dt; dataGridView1.Columns[0].Width = 0; dataGridView1.Columns[1].Width = 130; dataGridView1.Columns[2].Width = 100; dataGridView1.Columns[3].Width = 360; dataGridView1.Columns[4].Width = 130; this.dataGridView1.Columns[0].Visible = false; […]

无法将参数值从文本框转换为字符串

这是我的buttonsubmit_click事件的代码。 始终显示错误。 我不知道错误来自哪里。 有时错误是: 对象必须实现IConvertible。 da.InsertCommand.Parameters.Add(“@ApplicantUsername”, SqlDbType.VarChar).Value = txtUsername.Text; da.InsertCommand.Parameters.Add(“@Branch”, SqlDbType.VarChar).Value = ddlNear.SelectedValue; da.InsertCommand.Parameters.Add(“@NoALastName”, SqlDbType.VarChar).Value = txtLname.Text; da.InsertCommand.Parameters.Add(“@NoAFirstName”, SqlDbType.VarChar).Value = txtFname.Text; da.InsertCommand.Parameters.Add(“@NoAMiddleName”, SqlDbType.VarChar).Value = txtMname; da.InsertCommand.Parameters.Add(“@NoACivilStatus”, SqlDbType.VarChar).Value = ddlCivil.SelectedValue; da.InsertCommand.Parameters.Add(“@NoAMonth”, SqlDbType.VarChar).Value = ddlMonth.SelectedValue; da.InsertCommand.Parameters.Add(“@NoADay”, SqlDbType.VarChar).Value = ddlDay.SelectedValue; da.InsertCommand.Parameters.Add(“@NoAYear”, SqlDbType.VarChar).Value = ddlYear.SelectedValue; da.InsertCommand.Parameters.Add(“@NoAAge”, SqlDbType.VarChar).Value = txtAge.Text; da.InsertCommand.Parameters.Add(“@NoSLastName”, SqlDbType.VarChar).Value = txtSlname.Text; da.InsertCommand.Parameters.Add(“@NoSFirstName”, SqlDbType.VarChar).Value = txtSfname.Text; da.InsertCommand.Parameters.Add(“@NoSMiddleName”, SqlDbType.VarChar).Value […]

如何设计规则引擎?

我应该在C#中创建一个简单的规则引擎。 关于我如何进行的任何线索? 它是一个简约的规则引擎,并将使用SQL服务器作为后端。 我们是否有通常适用于规则引擎的一般蓝图或设计模式? 我可以使用哪种.Net技术来设计一种? 任何指示都会有所帮助。 谢谢。

使用替换单引号和validation整数的SQL注入

可能重复: 我可以通过使用单引号转义单引号和周围用户输入来防止SQL注入吗? 我只是想知道,如果我在用户输入中替换每个’ with ” ,例如string.Replace(“‘”,”””) ,并validation数字(确保它们是数字,并且不包含任何数字其他角色),SQL注入仍然可能吗? 怎么样? 我正在使用SqlCommand使用动态SQL查询。 像这样的东西: cmd.CommandText = “SELECT * FROM myTable WHERE ID = ” + theID.ToString(); 要么 cmd.CommandText = “UPDATE myTable SET title='” + title.Replace(“‘”,”””) + “‘ WHERE ID = ” + theID.ToString(); 在ASP.NET MVC中自动validation输入整数(检查它们是否为实数)。

如何为列添加值并更新数据库

我试图将dataGridViewAFp1中的Annual_Fees列的值添加到我转换为整数的文本框txtp1AF.Text中的新值AF2 。 然后,添加ResultAF的结果将转换回字符串updatedAF ,这是要在数据库中更新的值。 我将变量AF11初始化为0.查询确实更新了所选列。 想法是获得AF2中的任何值,并将其添加到该列和行中的任何值,具体是我在数据库中放入AF11 ,因此更新值updatedAF 。 这是我到目前为止所做的,但似乎没有起作用。 这些值没有加起来。 private void btnEnterAFp1_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(txtp1AF.Text)) { MessageBox.Show(“Please Enter fee”,”Oops”,MessageBoxButtons.OK,MessageBoxIcon.Warning); } else { if (dataGridViewAFp1.Rows[0].Cells[“Annual_Fees”].Value != null) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; int.TryParse(dataGridViewAFp1.Rows[0].Cells[“Annual_Fees”].Value.ToString(), out AF11); AF2 = Convert.ToInt32(txtp1AF.Text); ResultAF = AF11 + AF2; String updatedAF = Convert.ToString(ResultAF); […]