- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试提交到我的数据库,但在我尝试执行查询时收到一个异常,指出该数据库未打开。谁能解释我在这里做错了什么? GetConnectionString(DbMap)
肯定会返回正确的字符串,因为我在执行此代码之前使用它来创建表。
public static void InsertDataTable(DataTable dt)
{
try
{
//Open the SQL Connection
using (var dbConnection = new MySqlConnection(GetConnectionString(DbMap)))
{
dbConnection.Open();
//Instantiate the Command
using (var cmd = new MySqlCommand())
{
//Create a new Transaction
using (var transaction = dbConnection.BeginTransaction())
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//var identifier = dt.Rows[i].Field<int>("Identifier");
var entry = dt.Rows[i].Field<uint>("Entry");
var name = dt.Rows[i].Field<string>("Name");
var zone = dt.Rows[i].Field<uint>("Zone");
var type = dt.Rows[i].Field<ObjectType>("Type");
//Add data value with Parameters.
cmd.Parameters.AddWithValue("@Entry", entry);
cmd.Parameters.AddWithValue("@Name", name);
cmd.Parameters.AddWithValue("@Type", type);
//Create command to execute the insertion of Data into desired Table
string dataTableName = "zone_" + zone;
cmd.CommandText = $"INSERT INTO [{dataTableName}] " +
"([entry], [name], [type]) " +
"VALUES (@Entry, @Name, @Type)";
cmd.ExecuteNonQuery();
} //for (int i = 0; i < dt.Rows.Count; i++)
//Commit the Transaction
transaction.Commit();
} //using (var transaction = dbConnection.BeginTransaction())
} //using (var cmd = new MySqlCommand())
//Close the Connection
dbConnection.Close();
}
}
catch (MySqlException ex)
{
Logger.Write("InsertDataTable | MySqlException: " + ex);
}
catch (Exception ex)
{
Logger.Write("InsertDataTable | Exception: " + ex);
}
}
最佳答案
原因是您没有分配连接(或初始化命令的连接属性)。所以你需要做的是:
//Code here
cmd.Connection=dbConnection;
cmd.CommandType = CommandType.Text;
cmd.Connection = dbConnection;
//code here;
还有一些事情:
.Close()
来关闭连接使用
会为您完成参见示例:
using (var transaction = dbConnection.BeginTransaction())
{
for (int i = 0; i < dt.Rows.Count; i++)
{
var entry = dt.Rows[i].Field<uint>("Entry");
var name = dt.Rows[i].Field<string>("Name");
var zone = dt.Rows[i].Field<uint>("Zone");
var type = dt.Rows[i].Field<object>("Type");
using (var cmd = new MySqlCommand())
{
cmd.Parameters.Add("@Entry", MySqlDbType.UInt32).Value = entry;
cmd.Parameters.Add("@Name", MySqlDbType.VarString);
cmd.Parameters.Add("@Type", MySqlDbType.Blob).Value=type; //choose the type correctly
string dataTableName = "zone_" + zone;
cmd.CommandText = @"INSERT INTO [{dataTableName}] " +
"([entry], [name], [type]) " +
"VALUES (@Entry, @Name, @Type)";
cmd.CommandType = CommandType.Text;
cmd.Connection = dbConnection;
cmd.ExecuteNonQuery();
}
}
transaction.Commit();
}
关于c# - 连接未打开 : MySql BeginTransaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36561676/
当您只打算执行一个查询而不删除或更新数据时,是否真的有必要启动事务? 我目前正在使用带有 C3p0 的 Hibernate 4.1.9 示例, session session = hibernateu
以下 BeginTransaction 方法有什么区别: SqlConnection.BeginTransaction 方法 DbConnection.BeginTransaction 方法 DbCo
考虑以下: /** (Cas_Template_Tree::DeleteNode) * Deletes the given node from the tree, and all of it's c
我将使用SQLite help page中有关外键约束的示例: 让我们在SQLite中构建2个表: CREATE TABLE artist( artistid INTEGER PRIMARY
当使用最新版本的 System.Data.SQLite nuget 包创建一个简单的 SQLite 事务时,我注意到 SQLiteConnection.BeginTransaction() 方法的智能
我在多线程 Windows 桌面程序中使用 SQLite (System.Data.SQLite.dll)。我使用这段代码: using (var cn = new SQLiteConnection(
我有以下代码: $db->beginTransaction(); $achievement_name = $db->prepare("SELECT `achievement_name` FROM `a
在EF6、MVC、MySQL场景下,使用EF TransactionScope和DBContext.BeginTransaction有什么区别? TransactionScope 中没有显式回滚。 应
我目前正在重构我的代码并收到以下错误: Uncaught PDOException: There is no active transaction in... class Dbh { pri
我正在尝试提交到我的数据库,但在我尝试执行查询时收到一个异常,指出该数据库未打开。谁能解释我在这里做错了什么? GetConnectionString(DbMap) 肯定会返回正确的字符串,因为我在执
当两个不同的客户端调用具有 pdo::beginTransaction 的同一个 php 函数时会发生什么? 其中一个是否失败,或者两个 php 实例是否可以执行 beginTranscation 提
done = $connection; } public function createAction() { //create a new item
我有两个 fragment 并将它们设置如下 fram1 = new FragMent1(); fragMentTra.addToBackStack(null); fragMentTra = getF
我想把json解析出来的数据批量插入到db中。我使用下面的方法插入批处理。问题是 mDbWritable.beginTransaction();执行时间太长。通常像6秒!我不知道问题在哪里。一些想法是
我在尝试从第一个 fragment 启动 fragment 时遇到此错误: java.lang.NullPointerException: Attempt to invoke virtual meth
我的 php error_log 中出现以下错误 PHP Warning: Error while sending QUERY packet. PID=29770 in /home/test/test
我有一个原子事务的实现,其中在异步 HTTP POST 方法中更新了许多上下文。 在事务实现之前,我正在异步操作我的上下文 例如( await _context.Foo.AddAsync(trade)
好的,抱歉,主题名称太长了... 如果我执行以下操作: using (var transaction = session.BeginTransaction()) { // do somethi
我有一个简单的 Java Web 应用程序,它从数据库接收一些信息并在 Web 浏览器中显示该信息。 Hibernate 用于与 servlet 和 jsp 文件中的数据库进行交互。一切都如我所愿,但
我使用 FragmentPagerAdapter 在我的 ViewPgaer 中有 4 个 fragment 。我尝试在持续延迟后添加每个 fragment ,以便在切换底部栏选项卡时获得无抖动的动画
我是一名优秀的程序员,十分优秀!