Tag: mysql

MySqlParameter作为TableName

我想使用MySqlParameter将tableName传递给查询(以防止slq注入) MySqlCommand cmd = new MySqlCommand(“select * from @table”), cn) cmd.Parameters.AddWithValue(“@table”,TableName); 但这不起作用。 如何将tableName作为参数传递 PS我试图改变@到? – 不工作

C#和MySQL .NET Connector – 在通用类中防止SQL注入攻击的任何方法?

我的想法是通过C#(3.5)Winforms应用程序通过MySQL .NET Connector 6.2.2与MySQL数据库交谈,为Insert / Update / Select创建一些通用类。 例如: public void Insert(string strSQL) { if (this.OpenConnection() == true) { MySqlCommand cmd = new MySqlCommand(strSQL, connection); cmd.ExecuteNonQuery(); this.CloseConnection(); } } 然后,从程序的任何地方我都可以通过传递SQL查询字符串来运行带/不带用户输入的查询。 在SO上阅读开始告诉我这可能导致SQL注入攻击(对于任何用户输入值)。 无论如何擦除输入的strSQL还是我需要在每个需要执行数据库function的方法中创建单独的参数化查询? UPDATE1: 我的最终解决方案看起来像这样: public void Insert(string strSQL,string[,] parameterValue) { if (this.OpenConnection() == true) { MySqlCommand cmd = new MySqlCommand(strSQL, connection); for(int i =0;i< (parameterValue.Length […]

在Visual Studio中创建entity framework6模型关闭向导并断开MYSQL连接数据库

我试图使用Entity Framework 6将ADO.Net实体数据模型添加到Net.Framework类库中,但是当我进入步骤3时,当您选择Framework版本时,它立即关闭向导并连接到我的MYSQL数据库是它关闭后自动断开连接显示的内容。 我的App.Config文件 我已经使用NuGet安装了类库中的Entity Framework 6.20,Mysql.Data 8.0.12,MySql.Data.Entity 6.10.8,Google.Protobuf 3.6.1并添加为引用。 我重新安装,更新,使用MYSQL安装程序,没有运气。 我有一个Net.Core Web API应用程序作为第一个项目,但我知道Net.core不支持Framework 6,只支持Entity核心,所以你必须添加net.framework类库并在libary。 只是要注意我不是 (见图片)具有与“无法找到entity framework数据库提供程序”相同的错误我没有出现该错误,框架版本会自动选中,但它会关闭。 谢谢。 编辑 对于那些遇到这个问题的人,我有一个解决方法,我不得不从安装程序中卸载Net Connector并单独下载Net Connector 6.10.8,事情应该有效。

.NET MySQL连接器冲突DbProviderFactories

我正在使用带有entity framework4的.NET MySQL连接器,一切都运行良好,但我想在部署在服务器上时将MySQL客户端DLL文件与我的应用程序打包,因此我们不必担心在每台服务器上安装mysql,每个应用程序将只具有所需的正确副本。 为了实现这一点,我确保MySQL引用设置了“Copy Local”,这样它们就会被复制到bin文件夹并将以下内容添加到我的app.config中: 这工作,我能够部署应用程序而无需在远程服务器上安装mysql,但现在我的本地开发机器上有问题(我安装了MySQL连接器),当EF尝试时我收到此错误连接: 列’InvariantName’被约束为唯一。 值’MySql.Data.MySqlClient’已存在。 如果我在app.config中注释掉我上面添加的XML,那么错误就会消失。 这可能是因为系统上安装了相同的驱动程序并且位于machine.config中。 解决办法是什么? 我宁愿不必手动注释和取消注释该行,具体取决于我为哪个系统构建应用程序。

MySQL表名作为参数

我正在尝试设置,以便将表名作为参数传递给命令文本,但我没有让它工作。 我环顾了一下,发现了这样的问题: 用C#对MySQL进行参数化查询 ,但我没有运气。 这是相关代码(connection ==包含连接字符串的MySqlConnection ): public static DataSet getData(string table) { DataSet returnValue = new DataSet(); try { MySqlCommand cmd = connection.CreateCommand(); cmd.Parameters.AddWithValue(“@param1”, table); cmd.CommandText = “SELECT * FROM @param1”; connection.Open(); MySqlDataAdapter adap = new MySqlDataAdapter(cmd); adap.Fill(returnValue); } catch (Exception) { } finally { if (connection.State == ConnectionState.Open) connection.Close(); } return returnValue; } […]

在MySql中读/写unicode数据

我正在使用MySql DB,并希望能够读取和写入unicode数据值。 例如,法语/希腊语/希伯来语值。 我的客户端程序是C#(.NET framework 3.5)。 如何配置我的数据库以允许unicode? 以及如何使用C#从MySql读取/写入unicode值? 更新时间:09年9月7日 好的,所以我的Schema,Table&columns设置为’utf8’+ collat​​ion’utf8_general_ci’。 我打开连接时运行’set names utf8’。 到目前为止这么好……但是,仍然将值保存为’??????? “ 有任何想法吗? 解决方案! 好的,所以对于C#客户端读取和写入unicode值,必须包含在连接字符串中 :charset = utf8 例如:server = my_sql_server; user id = my_user; password = my_password; database = some_db123; charset = utf8; 当然你也应该把相关的表定义为utf8 + collat​​ion utf8_bin。

在SQL查询中转义值(带有SQL连接器的C#)

我知道我可以使用参数,但是什么是转义字符串序列的正确方法? 查询可能是这样的: “INSERT INTO records (ReferenceID,Name,Note,Author) VALUES (‘” + ID+ “‘,'” + addlevel.textBox1.Text + “‘,'”+addlevel.textBox2_note.Text+ “‘,'”+Program.Username+”‘)”; 我只是好奇,只想知道:) 编辑:那怎么样? “CREATE TABLE”+ string“….参数不能在这里使用!

MYSQL中不存在规范函数“EntityFunctions.TruncateTime”

我正在尝试运行此查询: DateTime DDate=DateTime.Today; //Today’s date without Time var v= db.measurements.Where(m => EntityFunctions.TruncateTime(m.InDate) == DDate); 它只返回这两个日期相等的对象,忽略时间部分。 但我收到: {“FUNCTION [数据库] .TruncateTime不存在”} 堆栈跟踪: at MySql.Data.MySqlClient.MySqlStream.ReadPacket() at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) at MySql.Data.MySqlClient.MySqlDataReader.NextResult() at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) […]

如何在不使用对话框的情况下在C#项目中为MySQL数据库设置连接字符串?

注意:显然,MySQL连接器安装未在对话框中自动显示以添加数据源的原因是因为 Visual 2008 Express Edition 不允许在Visual Studio IDE中进行“第三方集成”。 因此,这使得手动设置数据源变得更加重要,因为MySQL连接器中的集成工具不存在。 我的目标是使用Entity Framework(ADO.NET实体数据模型)建立与MySQL数据库的连接。 我对所有的向导和对话框感到沮丧,我仍然无法找到我正在寻找的东西。 这就是我到目前为止所做的:我刚刚在我的机器上安装了MySQL .NET Connector v6.1.3(据我所知,它已经正确安装。它显示在控制面板的“添加/删除程序”中)。 在Visual Studio(带有SP1的entity framework版本的Visual C#2008 Express Edition SP1)中,单击以添加对项目的引用,单击“ADO.NET实体数据模型”,这会将我带到一个屏幕,询问“该模型应该包含什么?“ 我选择“从数据库生成”,然后单击“下一步”。 这个屏幕问我应该使用哪种数据连接。 我点击“新建连接”并获得如下所示的屏幕: 我刚刚安装的ADO.NET MySQL Connector的选项在哪里? 我知道在哪里可以找到 MySQL 的连接字符串 ,但我无法弄清楚如何将它放入我的应用程序以便Visual Studio识别它,使用ADO.NET连接器,并允许我选择该连接来创建实体模型。 如何实现这一目标?

entity framework在重建时插入初始数据

我正在使用entity framework代码优先使用MySQL数据源。 我已经定义了ContactType.cs ,如下所示: public class ContactType { [Key] public int ContactTypeId { get; set; } [Required, StringLength(30)] public string DisplayName { get; set; } } 我的问题是,在重建数据库之后,我如何让EF将一些联系类型插入(没有SQL)数据库中。 通常,DB会重建为空白架构,但我想添加联系人类型,如(家庭,移动,办公室,传真)。