}//开始按钮,创建多线程 private void btnStart_Click(object sender, System.EventArgs e) { for(int i = 0;i < 4;i++) { this.m_thdX[i] = new Thread(new ThreadStart(Test)); m_thdX[i].Start(); }}//线程方法 public void Test() { string strSlct = "select top 2 * from Test where Status = 0"; SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = new SqlCommand(strSlct,sqlConn); DataSet ds = new DataSet(); sqlDA.Fill(ds); }
上面的代码中,一到 sqlDA.Fill(ds) 这个地方就报错,不知为何.
because you are using the same connection object! and you will be updating the same table, you are probably going to have a lot of problemstry to use multiple database connections, alsostatic Object MyObject = new Object();...public void Test() { lock(MyObject) { string strSlct = "select top 2 * from Test where Status = 0"; SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = new SqlCommand(strSlct,sqlConn); DataSet ds = new DataSet(); sqlDA.Fill(ds); } }
工作需要,临阵跑佛脚,不知该如何处理你所说的"同步",望指教.
我的基本操作如下,现在是还没等我对数据库进行什么操作,只查询都出问题了,代码如下:private Thread[] m_thdX = new Thread[4];
//到数据库的主连接
private SqlConnection sqlConn;
//初始化程序
private void Form1_Load(object sender, System.EventArgs e)
{ string strTmp = "DataBase=dbTest;Data Source=192.168.1.28;User ID=sa;pwd=sa";
sqlConn = new SqlConnection(strTmp);
sqlConn.Open();
}//开始按钮,创建多线程
private void btnStart_Click(object sender, System.EventArgs e)
{
for(int i = 0;i < 4;i++)
{
this.m_thdX[i] = new Thread(new ThreadStart(Test));
m_thdX[i].Start();
}}//线程方法
public void Test()
{ string strSlct = "select top 2 * from Test where Status = 0";
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = new SqlCommand(strSlct,sqlConn);
DataSet ds = new DataSet();
sqlDA.Fill(ds);
}
{
lock(MyObject)
{
string strSlct = "select top 2 * from Test where Status = 0";
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = new SqlCommand(strSlct,sqlConn);
DataSet ds = new DataSet();
sqlDA.Fill(ds);
}
}