我做的一个连接数据库的测试程序
            using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;namespace SQLCon
{
    public partial class add : Form
    {
        public add()
        {
            InitializeComponent();
        }        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
      static string myConnectString = (@"provider=microsoft.jet.oledb.4.0;Data Source=5704A3EEA692443;Initial Catalog=cwgl;Integrated Security=True");
       
        OleDbCommand com = new OleDbCommand();
        OleDbConnection conn = new OleDbConnection(myConnectString);
        private void button1_Click(object sender, EventArgs e)
        {
            string st1 = this.textBox1.Text.ToString().Trim();
            string st2 = this.textBox2.Text.ToString().Trim();
            string sle = "INSERT INTO jmb(num,xmm) values ('"+st1+"','"+st2+"')";
            conn.Open();
            com.Connection = conn;
            com.CommandText = sle;
            com.ExecuteNonQuery();
            conn.Close();
        }
    }
}
 提示出现的错误是   ”多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态“  
我用的是SQL Server,里面的的jmb的num和xmm是ntext类型,我试过很多的类型  出现的都是这个错误  大家帮我看看

解决方案 »

  1.   

    数据库连接字符看上去有点怪异
    你测试一下光打开数据库会出错吗?
    试试下面的连接字符:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\数据库文件.mdb"再者,像我很少用上面的方法写连接数据库的,你上面的写法应该是存在问题的你看一下我的吧:OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\数据库.mdb");
    conn.open();
    string st1 = this.textBox1.Text.ToString().Trim(); 
    string st2 = this.textBox2.Text.ToString().Trim(); 
    string sle = "INSERT INTO jmb(num,xmm) values ('"+st1+"','"+st2+"')"; 
    OleDbCommand cmd = new OleDbCommand(sle, conn);
    cmd.ExecuteNonQuery()
    conn.Close();
    conn.Dispose();
      

  2.   

    OleDb连SQL2000我可从来没用过,看你的报错定是连接串啦。。看看二楼的吧想问问连SQL2000用OleDb是不是比别的安全呀,要不干嘛要用它
      

  3.   

    “我用的是SQL Server”??
    应该是这样的:
    [oledb]
    ; Everything after this line is an OLE DB initstring
    Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=cwgl;Data Source=5704A3EEA692443
      

  4.   

    楼主若连接SQL2000数据库的话,那就用错方法喽using System.Data.SqlClient;SqlConnection conn=.......
      

  5.   

    Data Source=5704A3EEA692443
    这是什么?你是连接Access数据库还是Excel等其它数据源
      

  6.   

    用的是SQL的话,改成如下测试:SqlConnection conn = new SqlConnection("server=127.0.0.1;database=5704A3EEA692443;uid=sa;pwd=密码;"); 
    conn.open(); 
    string st1 = this.textBox1.Text.ToString().Trim();  
    string st2 = this.textBox2.Text.ToString().Trim();  
    string sle = "INSERT INTO jmb(num,xmm) values ('"+st1+"','"+st2+"')";  
    SqlCommand cmd = new SqlCommand(sle, conn); 
    cmd.ExecuteNonQuery() 
    conn.Close(); 
    conn.Dispose();改动的地方不多
      

  7.   

     对了,忘了说一句:引用的时候不是OleDb
    而是using System.Data.SqlClient;
      

  8.   


      出现这样的错误,一般是因为INSERT 进去的数据长度超过了数据库字段的长度或者是数据类型不匹配导致,请 检查: 
      

  9.   

    楼主用try{...}catch(){}捕获异常试试
      

  10.   

    多谢了    我也看了网上的一些说法,和8楼一样  不过我换了类型也没解决这个问题  
    我试了下2楼说的方法  问题试解决了  后来出现个错误  “不能使用 '';文件已在使用中”  这个网上说的是数据库权限的问题  
    谁能告诉我怎么解决  
      我也是第一次使用。net 出现的问题还真不少
      

  11.   

      楼主到底是用SQL 还是access 从你上面的话来看,你是用access ,"文件已在使用中".
      因为access不支持并发.. 一个用户打开了,另一个再使用就是这样了, 每个打字的连接,最好用了就关....