在我的网站上,我使用的是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) 如何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) 只接受列号,而不是名称.
连接已添加到连接池中.所以我关闭它,但它仍然保持身体开放.使用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) 我目前正在开发一个将导出MySQL数据的C#项目.导出是服务器中的任何数据库,所以我不会知道表中的字段和数据类型,我不知道表中的字段是否允许空值.
在测试期间,我发现导出工作正常,但如果字段允许null,当mysql数据读取器到达行为null时,它会显示错误SqlNullValueException,data为null.
我已经尝试过,if (reader.getString(field) == null) {}但它仍然显示错误.
如何处理数据库中的Null值.
感谢您的任何帮助,您可以提供.
基于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) 我有两个表orders和orderdetails
表顺序(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) 我有一张这样的桌子:
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) 好的,我的代码目前是:
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 时,没有任何价值。我已经完成了检查,并验证了在返回时,读者中包含正确的信息。然而读者没有价值观。我可能错过了一些完全愚蠢的东西。但我们将不胜感激。谢谢!
我曾经使用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上执行关闭?
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#项目,并且正在尝试获取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)
下面是我获取行数的函数 …
我试着用
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值上调用此方法或属性.
我怎么解决这个问题?
mysqldatareader ×12
c# ×9
mysql ×8
datareader ×3
dbnull ×2
null ×1
sorting ×1
sql ×1
vb.net ×1