标签: mysqldatareader

错误:为表'<table-name>'选择拒绝用户'<userid>'@'<ip-address>'的命令

在我的网站上,我使用的是MySQL数据库.我正在使用webservice,在那里我做所有与数据库相关的操作.

现在,在该Web服务的一种方法中,我得到以下错误.

选择命令被拒绝用户''''为表'''

可能有什么不对?

下面是我得到该错误的代码.我试过调试,发现它在线路上失败了

MySqlDataReader result1 = command1.ExecuteReader();

这是我的代码:

        String addSQL = "Select Max(`TradeID`) from `jsontest`.`tbl_Positions";
        MySqlConnection objMyCon = new MySqlConnection(strProvider);
        objMyCon.Open();
        MySqlCommand command = objMyCon.CreateCommand();

        command.CommandText = addSQL;
         MySqlDataReader result = command.ExecuteReader();
        //int j = command.ExecuteNonQuery();
         while (result.Read())
         {
             MaxTradeID = Convert.ToInt32(result[0]);
         }
        objMyCon.Close();
        for (i = 1; i <= MaxTradeID; i++)
        {
            String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
            MySqlConnection objMyCon1 = new MySqlConnection(strProvider);
            objMyCon1.Open();
            MySqlCommand command1 = objMyCon1.CreateCommand(); …
Run Code Online (Sandbox Code Playgroud)

mysql mysqldatareader mysql-error-1142

57
推荐指数
4
解决办法
18万
查看次数

如何通过列的名称检查MySqlDataReader中的NULL?

如何NULL在空旷地区检查价值MySqlDataReader

以下不起作用; 它始终击中else:

if (rdr.GetString("timeOut") == null)
{
    queryResult.Egresstime = "Logged in";
}
else
{
    queryResult.Egresstime = rdr.GetString("timeOut");
}
Run Code Online (Sandbox Code Playgroud)

rdr.IsDbNull(int i) 只接受列号,而不是名称.

c# mysql null dbnull mysqldatareader

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

在C#中使用MySQLConnection无法正常关闭

最终解决方案

连接已添加到连接池中.所以我关闭它,但它仍然保持身体开放.使用ConnectionString参数"Pooling = false"或静态方法MySqlConnection.ClearPool(连接)和MySqlConnection.ClearAllPools可以避免问题.请注意,问题是,当我关闭应用程序时,连接仍然存在.即使我关闭它.所以我要么根本不使用连接池,要么在关闭连接之前清除特定池,问题就解决了.我会花时间弄清楚在我的情况下什么是最好的解决方案.

感谢所有回答的人!它帮助我更好地理解了C#的概念,并从有用的输入中学到了很多东西.:)

===

原始问题:

我已经搜索了一段时间,并没有找到我的问题的解决方案:我是C#的新手并尝试编写一个类来使MySql Connections更容易.我的问题是,在我打开连接并关闭它之后.它仍然在数据库中打开并被中止.

我当然使用'using'语句,但是在退出程序后连接仍然是打开的并且被中止.

这是我的代码的样子:

using (DatabaseManager db = new DatabaseManager())
{
using (MySqlDataReader result = db.DataReader("SELECT * FROM module WHERE Active=1 ORDER BY Sequence ASC"))
{
    foreach (MySqlDataReader result in db.DataReader("SELECT * FROM module WHERE Active=1 ORDER BY Sequence ASC"))
    {
        //Do stuff here
    }
}
}
Run Code Online (Sandbox Code Playgroud)

类数据库管理器打开连接并在处理时关闭它:

public DatabaseManager()
{
    this.connectionString = new MySqlConnectionStringBuilder("Server=localhost;Database=businessplan;Uid=root;");
    connect();
}
private bool connect()
{
    bool returnValue = true;
    connection = new MySqlConnection(connectionString.GetConnectionString(false));
    connection.Open();
}

public void …
Run Code Online (Sandbox Code Playgroud)

c# mysqlconnection mysqldatareader

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

MySQLDataReader在c#中检索Null值问题

我目前正在开发一个将导出MySQL数据的C#项目.导出是服务器中的任何数据库,所以我不会知道表中的字段和数据类型,我不知道表中的字段是否允许空值.

在测试期间,我发现导出工作正常,但如果字段允许null,当mysql数据读取器到达行为null时,它会显示错误SqlNullValueException,data为null.

我已经尝试过,if (reader.getString(field) == null) {}但它仍然显示错误.

如何处理数据库中的Null值.

感谢您的任何帮助,您可以提供.

c# mysql mysqldatareader

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

使用C#查询MySQL的更有效方法是什么?

基于StackOverflow站点周围的链接(下面的参考资料),我提出了这个代码块来执行从我的C#应用​​程序到MySQL数据库的查询.

using (var dbConn = new MySqlConnection(config.DatabaseConnection))
{
    using (var cmd = dbConn.CreateCommand())
    {
        dbConn.Open();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT version() as Version";

        using (IDataReader reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                Console.WriteLine("Database Version: " + reader.GetString(reader.GetOrdinal("Version")));
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,每次我要进行一组查询时,我必须构建这个庞大的代码块,因为我不会(也不应该)在应用程序的生命周期中保持连接打开.

是否有更有效的方法来构建支持结构(嵌套usings,打开连接等),而是传递我的连接字符串和我想要运行的查询并获得结果?

参考问题:

这是我看过的三个.还有一些,但我的Google-fu现在无法重新启动它们.所有这些都为如何执行单个查询提供了答案.我想执行单独的业务逻辑查询 - 其中一些重复 - 并且不想重复不需要的代码.

我尝试过:基于nawfal的评论,我有以下两种方法:

private MySqlDataReader RunSqlQuery(string query)
{
    Dictionary<string, string> queryParms = new Dictionary<string, string>();
    MySqlDataReader QueryResult = RunSqlQuery(query, queryParms);
    return QueryResult;
}

private MySqlDataReader …
Run Code Online (Sandbox Code Playgroud)

c# mysql datareader mysqldatareader

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

MySqlDataReader:DataTable.Fill(reader)抛出ConstraintException

我有两个表ordersorderdetails

表顺序(PK = id,orderno上的UNIQUE索引)

|id|orderno|
| 1|1000   |
| 2|1001   |
Run Code Online (Sandbox Code Playgroud)

table orderdetails(PK = id)

|id|orderid|item|qty|
| 1|      1|ABC |  3|
| 2|      1|XYZ |  4|
Run Code Online (Sandbox Code Playgroud)

现在我想查询数据:

SELECT o.orderno, od.item, od.qty
  FROM orders o
Run Code Online (Sandbox Code Playgroud)

INNER JOIN orderdetails od ON.orderno = od.order

返回:

|orderno|item|qty|
|1000   |ABC |  3|
|1000   |XYZ |  4|
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用以下代码将结果加载到DataTable中,它将失败:

var connectionString = "Server=localhost;Database=orders;Uid=root;";
var commandText = "SELECT o.orderno, od.item, od.qty" + Environment.NewLine +
                  "FROM orders o" + Environment.NewLine +
                  "INNER JOIN orderdetails od ON …
Run Code Online (Sandbox Code Playgroud)

c# mysql datareader mysql-connector mysqldatareader

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

MySQL datetime字段查询按小时:分钟排序

我有一张这样的桌子:

id  date_time
1   2/11/2013 7:05
2   2/11/2013 7:00
3   2/12/2013 7:00
4   2/14/2013 7:00
5   2/16/2013 7:00
6   2/17/2013 7:00
7   2/12/2013 7:05
8   2/14/2013 7:05
9   2/15/2013 7:05
10  2/16/2013 7:05
11  2/17/2013 7:05
12  2/13/2013 7:00
13  2/15/2013 7:00
14  2/13/2013 7:05
Run Code Online (Sandbox Code Playgroud)

我需要按HOUR:MINUTE进行排序,而不是按DATE进行排序,因此我在输出中会得到如下信息:

2/11/2013 7:00
2/12/2013 7:00
2/13/2013 7:00
2/14/2013 7:00
2/15/2013 7:00
2/16/2013 7:00
2/17/2013 7:00
2/11/2013 7:05
2/12/2013 7:05
2/13/2013 7:05
2/14/2013 7:05
2/15/2013 7:05
2/16/2013 7:05
2/17/2013 7:05
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以直接使用MySQL对输出进行排序?...我知道一旦获得查询结果就可以通过PHP进行输出,但是只是想知道MySQL是否可以做类似的事情?

我试过这样的查询:

SELECT * FROM my_table …
Run Code Online (Sandbox Code Playgroud)

mysql sql sorting mysqldatareader

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

如何在阅读器关闭之前返回 MySqlDataReader

好的,我的代码目前是:

    public MySqlDataReader CreateQuery(string queryString, string connectionString )
    {

        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            using (MySqlCommand command = new MySqlCommand(queryString, connection))
            {
                command.Connection.Open();
                command.ExecuteNonQuery();

                MySqlDataReader reader = command.ExecuteReader();
                return reader;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在另一个函数中,我有:

using(MySqlDataReader readers = _connection.CreateQuery(query, connectString))
Run Code Online (Sandbox Code Playgroud)

目前,在这种形式下,当我将 reader 返回到 reader 时,没有任何价值。我已经完成了检查,并验证了在返回时,读者中包含正确的信息。然而读者没有价值观。我可能错过了一些完全愚蠢的东西。但我们将不胜感激。谢谢!

c# mysqldatareader

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

.NET MySql执行"使用"会关闭datareader吗?

我曾经使用try/catch/finally块关闭一个打开的datareader:

 Dim dr As MySqlDataReader = Nothing
 Try
   dr = DBConnection.callReadingStoredProcedure("my_sp")

 Catch ex As Exception
   ' the caller will handle this
   Throw ex
 Finally
   If dr IsNot Nothing Then dr.Close()
 End Try
Run Code Online (Sandbox Code Playgroud)

但我认为使用"Using"VB关键字应该更干净(并且更快):

Using dr As MySqlDataReader = DBConnection.callReadingStoredProcedure("my_sp")

End Using
'   dr is surely disposed, but is it closed? 
Run Code Online (Sandbox Code Playgroud)

IDispose接口(使用时需要)是否在DataReader上执行关闭?

mysql vb.net mysqldatareader

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

有没有办法检查列是否支持来自datareader的空值?

db中的表的列可以存储空值(如DBNulls).有没有一种方法,我可以从这些信息IDataReader还是DbDataReader

using (var reader = command.ExecuteReader())
{
    //can I get the column info like if it supports null value if I pass the ordinal?
    reader.CheckIfSupportsNull(someIndex) ???

    while (reader.Read())
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以读取单元格值并检查它DBNull.Value,但我不是问我是否可以检查读取值是否为null,但是如果我可以检查列本身是否支持DBNulls而不管表中存在的实际值.

我想知道这是否可能MySqlDataReader和/或SqlDataReader..

c# dbnull datareader sqldatareader mysqldatareader

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

检查从MySQL数据读取器返回的行数

我目前正在从事C#项目,并且正在尝试获取MySQL Data Reader返回的行数。

我知道没有直接功能,因此我正在尝试编写自己的函数。在函数中,我将MySQLDataReader对象传递给它,然后遍历MySQL数据读取器并递增一个计数器并返回该计数器的值。

然后,这似乎锁定了程序,我想是因为Reader.read()我已经算完了,但已经结束了。相反,我尝试创建阅读器的副本,然后遍历临时版本,但得到相同的结果。

以下是我执行查询并调用函数的代码。

string query = "SELECT * FROM reports, software, platforms, versions "
                        + "WHERE EmailVerified = @verified AND reports.SoftwareID = software.id AND reports.PlatformID = platforms.id "
                        + "AND reports.VersionID = versions.id AND BugReportAcceptedNotificationSent = @notificationSent";
using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
{
    cmd.Parameters.AddWithValue("@verified", "1");
    cmd.Parameters.AddWithValue("@notificationSent", "0");
    using (MySqlDataReader reader = cmd.ExecuteReader())
    {
        totalEmails = HelperClass.totalRowsInMySQLDataReader(reader);
        while (reader.Read())
        {
            currentEmailCount++;
            EmailNotifications emailNotification = new EmailNotifications(reader);
            emailNotification.sendNewBugReportAfterVerificationEmail(currentEmailCount, totalEmails);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

下面是我获取行数的函数 …

c# mysql mysqldatareader

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

IsDBNul带字符串

我试着用

currentOrder.PONumber = (reader.IsDBNull("PONumber") ? "Geen klantreferentie" : reader.GetString("PONumber"));
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

'System.Data.Common.DbDataReader.IsDBNull(int)'的最佳重载方法匹配具有一些无效参数.

参数1:无法从'string'转换为'int'.

当我使用columnindex时IsDBNull,我有以下错误:

数据是空的.无法在Null值上调用此方法或属性.

我怎么解决这个问题?

c# mysqldatareader

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