示例ERRCheckTest
为容易出错的代码段加上try{...}catch (Exception ex) {...}防止崩溃。
建立VS2015 C#项目:ERRCheckTest
InsertDataTest模板
修改代码
程序运行时,在按扭上胡乱点,哪个语句有问题,就用下面的格式:
Try
{
有问题的代码
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
//或者输出自己确定的出问题原因
}
完整代码
using System;
using System.Data;
using System.Windows.Forms;
using System.IO;
using FirebirdSql.Data.FirebirdClient;
namespace ERRCheckTest
{
publicpartialclassFrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}
publicFbConnection myConnection;
staticstringGetConnectionString()// 连接字符串
{
FbConnectionStringBuilder cs = newFbConnectionStringBuilder();
cs.UserID = "SYSDBA";
cs.Password = "masterkey";
cs.Database = Application.StartupPath + "\\data\\测试.fdb";
cs.DataSource = "localhost";
cs.Charset = "UTF8";
cs.Port = 3050;
cs.Dialect = 3;
cs.Role = "";
cs.ConnectionLifeTime = 15;
cs.Pooling = true;
cs.MinPoolSize = 0;
cs.MaxPoolSize = 50;
cs.PacketSize = 8192;
cs.ServerType = FbServerType.Embedded;
return cs.ToString();
}
privatevoid btnCreateDB_Click(object sender, EventArgs e)
{
//创建数据库
string path = Application.StartupPath + "\\data\\测试.fdb";
try
{
if (File.Exists(path))
{
File.Delete(path);
FbConnection.CreateDatabase(GetConnectionString());
MessageBox.Show("文件存在,删除重建!");
}
else
{
FbConnection.CreateDatabase(GetConnectionString());
MessageBox.Show("文件不存在,直接创建!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnOpenDB_Click(object sender, EventArgs e)
{
//打开数据库
myConnection = newFbConnection(GetConnectionString());
try
{
myConnection.Open();
MessageBox.Show("打开连接成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnCreateTable_Click(object sender, EventArgs e)
{
//创建空表
try
{
FbCommand createTable = myConnection.CreateCommand();
createTable.CommandText = "create table TestTBL (id int,\"姓名\" varchar(20))";
createTable.ExecuteNonQuery();
createTable.Dispose();
MessageBox.Show("创建空表成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnBinddgView_Click(object sender, EventArgs e)
{
//DataGridView显示数据
FbDataAdapter dt = newFbDataAdapter("select * from TestTBL", myConnection);
DataSet ds = newDataSet();
try
{
dt.Fill(ds, "TestTBL");
this.dgViewDB.DataSource = ds;
this.dgViewDB.DataMember = "TestTBL";
MessageBox.Show("DataGridView显示数据!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dt.Dispose();
ds.Dispose();
}
privatevoidbtnInsertData_Click(object sender, EventArgs e)
{
//插入数据
try
{
//插入数据一
FbCommand insertData = myConnection.CreateCommand();
insertData.CommandText = "insert into TestTBL values(@id, @name)";
insertData.Parameters.Clear();
insertData.Parameters.Add("@id", FbDbType.Integer).Value = 1;
insertData.Parameters.Add("@name", FbDbType.VarChar, 20).Value = "张三";
insertData.ExecuteNonQuery();
//插入数据二
insertData.CommandText = "insert into TestTBL values(@id, @胡作非为)";
insertData.Parameters.Clear();
insertData.Parameters.Add("@id", FbDbType.Integer).Value = 2;
insertData.Parameters.Add("@胡作非为", FbDbType.VarChar, 20).Value = "李四";
insertData.ExecuteNonQuery();
insertData.Dispose();
MessageBox.Show("插入数据成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnReadData_Click(object sender, EventArgs e)
{
//读取数据
try
{
FbCommand readData = myConnection.CreateCommand();
readData.CommandText = "select * from TestTBL";
FbDataReader Reader = readData.ExecuteReader();
while (Reader.Read())
{
string str_Temp = Reader.GetString(0);
MessageBox.Show(str_Temp);
str_Temp =Reader.GetString(1);
MessageBox.Show(str_Temp);
}
readData.Dispose();
MessageBox.Show("读取数据成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
privatevoidbtnConnectionClose_Click(object sender, EventArgs e)
{
//关闭连接
try
{
myConnection.Close();
MessageBox.Show("连接已关闭!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
测试成功
但下面问题未解决:只要打开一次数据库,无论关不关闭连接,都会出现?谁能给出个原因啊!