Tag: mysql connector

EF4.1多个嵌套实体包含获取NotSupportedException?

编辑:根据测试更新了问题描述 – 2011年9月12日。 我有这个查询,每当我调用.ToList()时抛出NotSupportedException(“不支持指定的方法。”)。 IQueryable query = db .FileDefinitions .Include(x => x.DefinitionChangeLogs) .Include(x => x.FieldDefinitions.Select(y => y.DefinitionChangeLogs)) // bad .Include(x => x.FieldDefinitions.Select(y => y.FieldValidationTables)) // bad .Where(x => x.IsActive); List retval = query.ToList(); 如果我注释掉我评论为“坏”的任一行,那么查询就可以了。 我也尝试在我的对象模型中包含不同的嵌套实体,效果相同。 包括任何2将导致崩溃。 通过嵌套,我的意思是导航属性的导航属性。 我也尝试将.Include方法与字符串路径一起使用:结果相同。 我的表结构如下所示: 这显然使用MySQL 5.1(显然是InnoDB表)作为MySQL Connector / NET 6.3.4的数据库存储。 所以我的问题是:为什么这不起作用? 注意:如果我明确加载此链接中的相关实体,我可以让它工作。 但我想知道为什么EF讨厌我的数据模型。 解答:MySQL Connector显然无法处理第二个嵌套实体包含。 它抛出NotSupportedException,而不是.NET EF。 当我使用EF4.0尝试这个时,同样的错误也出现了,但我当时的研究让我相信它是导致问题的自我跟踪实体。 我尝试升级到最新的Connector,但它开始导致Out of […]

使用mysql在C#中出现问题时,我的事务不会回滚吗?

我使用mysql connector6.2.3.0(.net)从C#连接mysql 5.1。我想一次插入3个表。所以,我正在使用事务处理。假设,当插入数据时遇到一些错误第3个表,然后事务不回滚。数据插入前两个表。 这是我的代码…… MySqlDataAdapter da = new MySqlDataAdapter(); DBUtil cUtil = new DBUtil(); MySqlConnection mysqlCon=null; MySqlTransaction txn = null; try { mysqlCon = cUtil.getDbConnection(); txn = mysqlCon.BeginTransaction(); //1 sql = “insert into test_details()”; da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn); da.InsertCommand.ExecuteNonQuery(); //2 sql = “insert into task_details()”; da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn); da.InsertCommand.ExecuteNonQuery(); sql = “select […]

使用C#获取MySQL记录数

我想知道如何使用C#获取查询的记录计数。 这是我使用的代码.. MySqlDataReader recordset = null; query = new MySqlCommand(“SELECT * FROM test ORDER BY type_ID ASC”, this.conn); recordset = query.ExecuteReader(); while (recordset.Read()) { result.Add(recordset[“type_ID”].ToString()); } return result;

如何使用mysql连接器通过C#连接到mysql而不实际安装连接器

我们有一个基于dot net 2.0的C#产品,它使用Mysql作为数据存储。 当我们在XP / Win 7机器上安装mysql连接器6.3.6时,我们能够从C#代码连接到数据库而没有任何问题。 但是,当mysql连接器实际上没有安装在机器上但与可执行文件存在于同一目录中时,我们在连接到mysql数据库时遇到问题。 我们不希望在我们希望产品运行的每台机器上安装连接器。 我们希望connectory dll可以直接使用,因为我们在代码中使用任何第三方dll(例如记录器)。 即使我们将mysql.data.dll复制到安装了exe的同一目录中,它也会构建但不会连接到数据库。 给出的错误是 无法找到请求的.Net Framework数据提供程序。 它可能没有安装Blockquote 技术信息: Mysql 5.0 C# Dot Net框架2.0 Mysql Connector 6.3.6(与sql连接器的ver 6.0.3相同的问题) 赢得XP / Win 7 当我们使用ASP.Net时,我们可以将下面给出的标签指定到web.config中,我们可以通过将dll放入bin目录直接连接到mysql数据库 为什么我们不能在C#中为桌面环境中的Client Server应用程序执行相同的操作。

.NET CORE MySql MaxPoolSize未应用于

我们在RDS中托管了一个MySQl数据库。 创建MySQL连接时,似乎不应用最大池大小。 我们有一个看起来像这样的连接字符串 Server=myServer;Port=3306;Database=MyDatabase;User Id=MyUser;Password=MyPassword;ConnectionReset=True;pooling=true;minpoolsize=1;maxpoolsize=4;ConnectionLifeTime=30″ 我们在这里添加了最大池大小,但是我们的应用程序仍然保持着太多的连接。 我已经使用该命令在MySqlWorkbench中validation了这一点 select * FROM INFORMATION_SCHEMA.PROCESSLIST 我们正常地创建一个sql连接..我做错了什么? var connection = new MySql.Data.MySqlClient.MySqlConnection(_connectionString); connection.Open() 技术信息:MySql Server版本:5.7.16 MySqlConnector 🙁 Nuget Package) – > MySql.Data Version =“7.0.6-ir31” 更新: 在unit testing中执行此操作并并行打开MySQL连接时,一切似乎都很顺利。 但是,当Web请求通过ASP.NET Core进入时,似乎存在问题。

有没有办法连接到没有ssl的MySQL数据库?

我正在尝试连接到本地MySQL数据库。 我有这个连接器: using(MySqlConnection conn = new MySqlConnection(“Database=Studentenverwaltung;Port=3306;Data Source=127.0.0.1;User Id=root;Password=abc123”)) { try { conn.Open(); Console.WriteLine(“Opened!”); conn.Close(); } catch(Exception e) { Console.WriteLine(“Cannot open Connection”); Console.WriteLine(e.ToString()); } } 但是我得到了这个例外: MySql.Data.MySqlClient.MySqlException(0x80004005):主机127.0.0.1不支持SSL连接。 它似乎无法连接到数据库,因为数据库不支持SSL。 那么有没有办法如何连接到没有SSL的数据库?

MySQL Connector附加枚举值,其值小于实际值

我正在使用MySQL Connector for .NET来管理来自C#的MySQL数据库。 当我尝试将枚举插入到数据库中时,它会将枚举值附加一个小于实际值的枚举值。 public enum MyEnum { FirstValue, SecondValue, ThirdValue; } public void InsertEnum() { MySqlConnection con = new MySqlConnection(connStr); string sql = “INSERT INTO table (Col1) VALUES (@enumVal);”; MySqlCommand cmd = new MySqlCommand(sql, con); cmd.Parameters.AddWithValue(“@enumVal”, MyEnum.SecondValue); //Note I’m trying to insert ‘SecondValue’ –^ con.Open(); cmd.ExecuteNonQuery(); con.Close(); } 这FirstValue在数据库中插入FirstValue 。 数据库中的Col1列是ENUM数据类型: ENUM(‘FirstValue’,’SecondValue’,’ThirdValue’) 如果我尝试追加MyEnum.FirstValue我会收到数据截断错误( […]

预计读取4个头字节但仅接收0

我编写了一个Windows服务,它使用SSH(Secure Shell)将数据从CSV文件复制到PhpMyAdmin在线数据库。 连接打开时出现错误触发, MySql.Data.MySqlClient.MySqlProtocolException HResult=0x80131509 Message=Packet received out-of-order. Expected 2; got 1. Source=mscorlib StackTrace: at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 作为解决方案,我决定保持当前线程并在连接打开之前添加以下行。 Task.Delay(TimeSpan.FromMilliseconds(10000)).Wait(); 不幸的是,这会导致另一个错误, MySql.Data.MySqlClient.MySqlException HResult=0x80004005 Message=Failed to read the result set. Source=MySqlConnector StackTrace: Inner Exception 1: EndOfStreamException: Expected to read 4 header bytes but only received 0. 当我随机改变线程保持的时间值时,上述2个错误彼此不同。 相关代码块: Public void insert(string connString){ using (var […]

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 […]