C# dataset 有关问题~大神帮小弟我一把哈。
C# dataset 问题求助~~~大神帮我一把哈。。
调用 FillDataGridData(),立马报错
跟踪运行发现,到了Sda.Fill(Ds, tablename),就挂了。。但是检查好久没发现哪里有错。。
求大神帮忙,看看什么地方问题
private void FillDataGridData()
{
DataSet Ds = dbBackPackage.QueryBackPackage(checkBox1.Checked, false, txtBarCode.Text.ToString(), dateTimePicker1.Text.ToString());
Bding.DataSource = Ds.Tables[0].DefaultView; ;
this.dataGrid1.DataSource = Bding;
}
public static DataSet QueryBackPackage(bool byTime,bool inServer,string barCode,string dateTime)
{
string sql = "select * from X_BackPackage where barcode like '%@barcode%' ";
if (byTime)
{
sql = sql + "and regtime='@datetime'";
SqlCeParameter[] para = new SqlCeParameter[2];
para[0] = new SqlCeParameter("@barcode",barCode);
para[1] = new SqlCeParameter("@datetime", dateTime);
return dbHelper.GetDataSet(sql, "X_BackPackage", para);
}
else
{
SqlCeParameter[] para = new SqlCeParameter[1];
para[0]=new SqlCeParameter("@barcode",barCode);
return dbHelper.GetDataSet(sql, "X_BackPackage",para);
}
}
public static DataSet GetDataSet(string Sql, string tablename, params SqlCeParameter[] paras)
{
dbHelper dbhelper = new dbHelper();
SqlCeConnection Con = dbhelper.GetConnection();
SqlCeCommand Cmd = new SqlCeCommand(Sql, Con);
foreach (SqlCeParameter p in paras)
{
Cmd.Parameters.Add(p);
}
SqlCeDataAdapter Sda = new SqlCeDataAdapter(Cmd);
DataSet Ds = new DataSet();
try
{
Sda.Fill(Ds, tablename);
return Ds;
}
catch (SqlCeException ex)
{
if (Con.State != ConnectionState.Closed)
{
Con.Close();
}
MessageBox.Show("错误"+ex.Message);
}
return null;
}
------解决思路----------------------
CE 系统? 看是不是数据量太大了 减少数据量吧
------解决思路----------------------
Sda.Fill(Ds); 这样式式
再不行用DataReader读取
要再不行用Sqlite数据库吧 比那个Ce的好用多了
------解决思路----------------------
第二个错误感觉是数据类型不对,你在GetDataSet中设断点调试一下看
------解决思路----------------------
SqlCeConnection Con = dbhelper.GetConnection();
这里是否进行了connection的open操作?
------解决思路----------------------
SqlCeConnection Con = dbhelper.GetConnection();打开连接了吗?
调用 FillDataGridData(),立马报错
跟踪运行发现,到了Sda.Fill(Ds, tablename),就挂了。。但是检查好久没发现哪里有错。。
求大神帮忙,看看什么地方问题
private void FillDataGridData()
{
DataSet Ds = dbBackPackage.QueryBackPackage(checkBox1.Checked, false, txtBarCode.Text.ToString(), dateTimePicker1.Text.ToString());
Bding.DataSource = Ds.Tables[0].DefaultView; ;
this.dataGrid1.DataSource = Bding;
}
public static DataSet QueryBackPackage(bool byTime,bool inServer,string barCode,string dateTime)
{
string sql = "select * from X_BackPackage where barcode like '%@barcode%' ";
if (byTime)
{
sql = sql + "and regtime='@datetime'";
SqlCeParameter[] para = new SqlCeParameter[2];
para[0] = new SqlCeParameter("@barcode",barCode);
para[1] = new SqlCeParameter("@datetime", dateTime);
return dbHelper.GetDataSet(sql, "X_BackPackage", para);
}
else
{
SqlCeParameter[] para = new SqlCeParameter[1];
para[0]=new SqlCeParameter("@barcode",barCode);
return dbHelper.GetDataSet(sql, "X_BackPackage",para);
}
}
public static DataSet GetDataSet(string Sql, string tablename, params SqlCeParameter[] paras)
{
dbHelper dbhelper = new dbHelper();
SqlCeConnection Con = dbhelper.GetConnection();
SqlCeCommand Cmd = new SqlCeCommand(Sql, Con);
foreach (SqlCeParameter p in paras)
{
Cmd.Parameters.Add(p);
}
SqlCeDataAdapter Sda = new SqlCeDataAdapter(Cmd);
DataSet Ds = new DataSet();
try
{
Sda.Fill(Ds, tablename);
return Ds;
}
catch (SqlCeException ex)
{
if (Con.State != ConnectionState.Closed)
{
Con.Close();
}
MessageBox.Show("错误"+ex.Message);
}
return null;
}
------解决思路----------------------
CE 系统? 看是不是数据量太大了 减少数据量吧
------解决思路----------------------
Sda.Fill(Ds); 这样式式
再不行用DataReader读取
要再不行用Sqlite数据库吧 比那个Ce的好用多了
------解决思路----------------------
第二个错误感觉是数据类型不对,你在GetDataSet中设断点调试一下看
------解决思路----------------------
SqlCeConnection Con = dbhelper.GetConnection();
这里是否进行了connection的open操作?
------解决思路----------------------
SqlCeConnection Con = dbhelper.GetConnection();打开连接了吗?