 |
|
คือผมจะบันทึกค่าโดยใช้ Parameter และโยนเข้า Sql ไปโดยผ่าน Class แล้วมัน Error ครับ มันขึ้นว่า Fatal error encountered during command execution. |
|
 |
|
|
 |
 |
|
ขออนุญาตปิดกระทู้นะครับสำเร็จแล้วครับ ผลตามด้านล่างครับ
คือผมจะบันทึกค่าโดยใช้ Parameter และโยนเข้า Sql ไปโดยผ่าน Class ที่ผมดึงของคนอื่นมาใช้ แล้วมัน Error ครับ มันขึ้นว่า Fatal error encountered during command execution. ในช่วงของ Class ที่ชื่อว่า Database ใน Function ที่ชื่อว่า DataManipulatewithparamiter() มันจะ Return กลับมาที่ Form1 เป็น false และแจ้ง catch ว่า Fatal error encountered during command execution. ตามที่ได้กล่าวไปแล้วในข้างตัน ไม่ทราบผมทำ Parameter ผิดตรงไหนหรือครับ หรือต้องใช้ แบบนี้ครับ
Code (C#)
Database.sqlCom.Parameters.Clear();
Database.sqlCom.Parameters.Add("STRRUN", OleDbType.VarChar).Value = strRunno;
string sqlUpdate = "UPDATE INDEXMASTER SET RUNNO = ?";
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using MySql.Data.MySqlClient;
namespace testParamiterForMysql
{
public partial class Form1 : Form
{
string strConMysql = ConfigurationManager.ConnectionStrings["mySqlServer"].ToString();
Database Database = new Database();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Database.OpenConnection(strConMysql);
Database.OleDbCommand();
Database.BeginTransaction();
MySqlParameter startDat = new MySqlParameter("@startDate", textBox1.Text);
string sql = "INSERT INTO testtable(field1) VALUES (@startDate)";
Database.sqlCom.CommandType = CommandType.Text;
Database.sqlCom.Connection = Database.sqlCon;
Database.sqlCom.CommandText = sql;
if (!Database.DataManipulatewithparamiter())
{
Database.RollBackTran();
MessageBox.Show(Database.error);
return;
}
Database.CommitTran();
Database.CloseConnection();
}
}
}
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.OleDb;
namespace testParamiterForMysql
{
class Database
{
public string error;
public MySqlCommand sqlCom = null;
MySqlTransaction Tran = null;
public MySqlConnection sqlCon = new MySqlConnection();
public void OpenConnection(string strCon)
{
if (sqlCon.State != ConnectionState.Open)
{
sqlCon.ConnectionString = strCon;
sqlCon.Open();
}
}
public void OleDbCommand()
{
if (sqlCon.State == ConnectionState.Open)
sqlCom = new MySqlCommand();
}
public void BeginTransaction()
{
Tran = sqlCon.BeginTransaction();
}
public bool DataManipulatewithparamiter()
{
try
{
sqlCom.Transaction = Tran;
sqlCom.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
error = ex.Message;
return false;
}
}
public bool DataManipulate(string query, MySqlConnection sqlcon)
{
try
{
sqlCom = new MySqlCommand(query, sqlcon);
sqlCom.Transaction = Tran;
sqlCom.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
//tran.Rollback();
error = ex.Message;
return false;
}
}
public void CommitTran()
{
Tran.Commit();
}
public void RollBackTran()
{
Tran.Rollback();
}
public DataTable GetData(string strcon, string sqlstr)
{
return GetData(strcon, sqlstr, null);
}
public DataTable GetData(string strcon, string sqlstr, params MySqlParameter[] param)
{
MySqlConnection olecon = new MySqlConnection();
try
{
DataTable dt = new DataTable();
{
olecon.ConnectionString = strcon;
olecon.Open();
MySqlCommand dbCom = new MySqlCommand(sqlstr, olecon);
dbCom.Parameters.Clear();
if (param != null)
{
foreach (MySqlParameter p in param)
{
dbCom.Parameters.Add(p);
}
}
MySqlDataAdapter da = new MySqlDataAdapter(dbCom);
da.Fill(dt);
}
return dt;
}
finally
{
olecon.Close();
}
}
public void CloseConnection()
{
sqlCon.Close();
}
}
}
Tag : .NET, MySQL, Win (Windows App), C#, VS 2010 (.NET 4.x), Windows
|
ประวัติการแก้ไข 2012-09-14 15:06:30 2012-09-19 08:36:34
|
 |
 |
 |
 |
Date :
2012-09-14 15:04:22 |
By :
teerapat_kan |
View :
4362 |
Reply :
6 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ยังหาคำตอบไม่ได้เลยครับ ช่วยด้วยนะครับ หรือจะให้อธิบายตรงไหนบอกได้นะครับ
|
 |
 |
 |
 |
Date :
2012-09-14 22:51:10 |
By :
teerapat_kan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (C#)
public void BeginTransaction()
{
//Tran = sqlCon.BeginTransaction();
Tran = sqlCon.BeginTransaction(IsolationLevel.ReadCommitted);
}
ลองดูครับ
|
 |
 |
 |
 |
Date :
2012-09-17 08:58:26 |
By :
otomokung |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากนะครับแต่ ยังไม่ได้อะครับ ขึ้นเหมือนเดิมเลยครับ
|
ประวัติการแก้ไข 2012-09-19 07:45:30
 |
 |
 |
 |
Date :
2012-09-19 07:44:39 |
By :
teerapat_kan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สำเร็จแล้วครับสรุปไปจบที่
Code (C#)
Database.sqlCom.Parameters.Clear();
Database.sqlCom.Parameters.Add("@text", MySqlDbType.VarChar).Value = textBox1.Text;
string sql = "INSERT INTO testtable(field1) VALUES (@text)";
พอดีไปนั่งอ่าน Manual ของ MySql แล้วบอกว่าให้ใช้ แบบนี้เลยลองทำตาม Commit transaction เรียบร้อยครับ
นี่โค้ดเต็มๆครับ
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using MySql.Data.MySqlClient;
namespace testParamiterForMysql
{
public partial class Form1 : Form
{
string strConMysql = ConfigurationManager.ConnectionStrings["mySqlServer"].ToString();
Database Database = new Database();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Database.OpenConnection(strConMysql);
Database.OleDbCommand();
Database.BeginTransaction();
Database.sqlCom.Parameters.Clear();
Database.sqlCom.Parameters.Add("@text", MySqlDbType.VarChar).Value = textBox1.Text;
string sql = "INSERT INTO testtable(field1) VALUES (@text)";
Database.sqlCom.CommandType = CommandType.Text;
Database.sqlCom.Connection = Database.sqlCon;
Database.sqlCom.CommandText = sql;
if (!Database.DataManipulatewithparamiter())
{
Database.RollBackTran();
MessageBox.Show(Database.error);
return;
}
Database.CommitTran();
Database.CloseConnection();
}
}
}
ขอบคุณทุกท่านที่เข้ามาอ่านกระทู้นะครับหวังว่าจะเป็นความรู้กับผู้อื่นไม่มากก็น้อยครับ
|
 |
 |
 |
 |
Date :
2012-09-19 08:32:00 |
By :
teerapat_kan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แจ่มครับ
|
 |
 |
 |
 |
Date :
2012-09-19 08:56:14 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|