我正在尝试在Visual Studio 2017中构建.net连接器c#的源代码.我尝试从GitHub下载几个版本的MySQL连接器(https://github.com/mysql/mysql-connector-net/releases) ,但每个版本都有问题,我不确定我缺少什么.
我尝试下载最新版本的7.0.7-m6,但这会引发有关UAP项目不一致的目标框架的错误.我找不到任何关于这意味着什么,所以我尝试了以前的版本之一,6.10.1和6.10.0,但这两个都有不同的问题.
我得到的错误是
Source file 'Desktop\mysql-connector-net-6.10.0\Source\MySQL.Data\X\XDevAPI\Common\ColumnTypes.cs' could not be found.
Run Code Online (Sandbox Code Playgroud)
有很多这类错误,查看目录,这些文件不存在,但项目仍在引用它们.
我原本以为从GitHub版本导入一个项目就可以正常工作,一个发布版本也不会有不存在的文件引用,所以我错过了什么.
我正在研究一个C#控制台程序,它从表中获取大量记录,通过医学分析器运行它们,然后更新每个记录.它使用MySQL Connector/NET 5.2.7.它的工作方式是我使用SQL_BUFFER_RESULT一次抓取数据块(即20,000行)以避免锁定.每条记录都通过分组器运行,然后在该记录上完成单独的更新查询.使用了两个连接,一个读连接和一个写连接.
因此,当程序执行并循环读取查询中的记录时,它使用result.Read()来执行此操作,其中result是MySqlDataReader.result.Read调用是抛出异常的地方.它是随机发生的(不是在同一记录或任何事情上).一旦在第一条记录上遇到它,它也会在数据读取器的每次后续读取调用中遇到.我尝试过很多东西,并且搜寻其他人遇到的相关问题.任何见解都会很棒,并随时让我知道我需要提供的其他信息.
我的想法是通过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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,从程序的任何地方我都可以通过传递SQL查询字符串来运行带/不带用户输入的查询.
在SO上阅读开始告诉我这可能导致SQL注入攻击(对于任何用户输入值).无论如何擦除输入的strSQL还是我需要在每个需要执行数据库功能的方法中创建单独的参数化查询?
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 / 2);i++)
{
cmd.Parameters.AddWithValue(parameterValue[i,0],parameterValue[i,1]);
}
cmd.ExecuteNonQuery();
this.CloseConnection();
}}
Run Code Online (Sandbox Code Playgroud) 我遇到了一个有线问题,当我要将数据插入我的数据库时,它不会插入而不会失败(抛出异常)!,,当数据重复或提供错误的表时,它会抛出异常!
这是我的代码!
from mysql import connector
con = connector.Connect(user='root',password='root',database='test',host='localhost')
cur=con.cursor()
cur.execute("""insert into user values ('userName', 'passWord')""")
Run Code Online (Sandbox Code Playgroud)
数据库test仅包括一个表,该表是users与包括3个字段,其是id和username并且password,用户名是唯一id是A_I
请注意 我也使用过此查询!:
""插入用户(
username,password)值('userName','passWord');"""
尝试了很多方法,但没有发生任何事情(没有插入,也没有例外!)
我试图使用带有预准备语句的存储函数但没有取得任何成功.
MySQL准备语句但后来没有执行它,没有给出错误,它只是默默地失败.
这是*函数:
drop function if exists lineDistanceC;
delimiter //
CREATE FUNCTION lineDistanceC (la1 DOUBLE, lo1 DOUBLE, la2 DOUBLE, lo2 DOUBLE) RETURNS DOUBLE
BEGIN
SET @r = 6371;
SET @lat1 = RADIANS(la1);
SET @lon1 = RADIANS(lo1);
SET @lat2 = RADIANS(la2);
SET @lon2 = RADIANS(lo2);
SET @x = (@lon2-@lon1) * COS((@lat1+@lat2)/2);
SET @y = (@lat2 - @lat1);
RETURN (SQRT((@x*@x) + (@y*@y)) * @r);
END
//
delimiter ;
Run Code Online (Sandbox Code Playgroud)
它按预期在命令行上工作,并在SELECT语句中替换硬编码的double然后允许它按预期工作,因此周围的代码也很好.
我已经启用了CLIENT_MULTI_STATEMENTS作为MySQL连接参数,我怀疑它只涉及CALLing程序,但它是一个值得抓住的吸管.
该声明使用以下方式准备:
strcpy (sqlStr, "SELECT lineDistanceC(Y(pnt),X(pnt), ?, ?) FROM mytable");
MYSQL_STMT *statement;
if …Run Code Online (Sandbox Code Playgroud) 晚上好,任何人都知道这个错误
JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
Run Code Online (Sandbox Code Playgroud)
它总是出现当我开始部署mysql jar并且我的应用程序无法在服务器上启动时HTTP Status 404我遭受了很多并且无法解决问题,请帮助我.
注意:我用过 mysql-connector-java-5.1.24.jar
几个月前,我的组织从Visual Studio 2013升级到Visual Studio 2015 RC,我们刚刚尝试从MySQL数据库更新一些现有的"db-first"EntityFramework模型.这样做时,我们收到以下错误.
尝试从数据库更新时发生"System.ArgumentException"类型的异常.异常消息是:'无法将运行时连接字符串转换为其设计时等效项.未为提供程序"MySql.Data.MySqlClient"安装使Visual Studio与数据库进行通信以进行设计所需的库(DDEX提供程序).
从2013年11月开始,这个错误的快速SO搜索产生了这个结果(特别是参考VS 2013)...
显然,MySql和Visual Studio 2013还没有合作.
以下是MySql论坛上的链接:http://forums.mysql.com/read.php?174,594798,600466#msg-00466
您可能需要等待MySql连接器的下一个版本.
这是否意味着这可能是一个类似的问题,我们只需要等待它,直到有一个与VS 2015兼容的新MySql.Data客户端?或者是否有可能导致其他原因(可能是VS 2015 RC中的错误)?
我们使用最新的稳定版本的Entity Framework(6.1.3),MySql.Data(6.9.6)和MySql.Data.Entity(6.9.6).
特别好奇的是,如果其他人特别偶然发现了VS 2015 RC这个问题.
c# mysql-connector mysql.data entity-framework-6 visual-studio-2015
我一直在尝试在我一直在研究的Python项目中使用MySQL.我下载了连接器:mysql-connector-python-2.1.3-py3.4-winx64 这里.
我已经安装了Python 3.5.1.当我尝试安装连接器时,它不起作用,因为它需要python 2.7.我在很多网站上搜索过,即使在StackOverflow上我也找不到解决方案.
谢谢你的帮助.
我尝试在phpAdmin上从数据库中删除一行,查询工作正常,但是当我用它执行它时
码:
MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection);
MySqlDataReader reader = getUserID.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我明白了
错误:
目标数组不够长,无法复制集合中的所有项目.检查数组索引和长度.
我没有任何问题地插入删除用户.
数据库有一个UserID与属性Unique,Int(长9)和Auto-Increment与UserName从类型字符.
我的问题是:
为什么我收不到,userID我怎么才能收到?
编辑
我只能接收varchar的任何整数或日期数据.
这是数据库创建查询: 创建查询
我应该重用游标对象还是为每个查询创建一个新游标对象?
重新使用光标:
# we're going to connect to s3 and mysql
db = mysql_connect(host="localhost",
user="user",
passwd="pass",
database="db")
# Reusing the cursor
cursor = db.cursor()
# loop through all the files in the bucket one by one
for key in bucket.get_all_keys():
# the document id is the filename in the s3 bucket
doc_id = key.name.split("/")[-1]
cursor.execute("SELECT document_name FROM laws_docs WHERE id = %i", (doc_id,))
doc_name = cursor.fetchone()[0]
cursor.close()
Run Code Online (Sandbox Code Playgroud)
- 或者 -
每次新光标:
# we're going to connect to s3 and mysql …Run Code Online (Sandbox Code Playgroud) mysql-connector ×10
mysql ×6
c# ×5
python ×2
.net ×1
c ×1
insert ×1
jboss7.x ×1
mysql-python ×1
mysql.data ×1
python-3.x ×1