Tag: oledbcommand

使用OLEDB Connection选择Excel工作表使用范围

有没有办法通过OLEDB Command对象选择Excel工作表使用范围? 因为我有一个包含400行的Excel文件,但是当我删除200行并尝试再次选择工作表时,它再次选择最多400行而不是选择200行。 这是我为选择工作表而编写的代码: oledbConn = new OleDbConnection(connectionString); oledbCmd = new OleDbCommand(“select * from [Sheet1$]”, oledbConn); oledbConn.Open(); oledbDr = oledbCmd.ExecuteReader(); while(oledbDr.Read()) { }

从Excel导入 – 标题不在第1行

我是否缺少一些简单的方法,使用OleDBConnection将Excel工作表导入数据表并更改标题所在的行? 我的连接字符串中有HDR = YES,并且当标题位于第1行时效果很好,但标题实际上需要位于第3行。我使用以下CommandText: SELECT [headercol1name], [headercol2name], [headercol3name] FROM [sheetname]

Stored Proc返回一个Cursor,如何在C#中使用OLEDB来处理它

我正在使用OLEDB驱动程序调用Oracle DB中的存储过程。 存储过程将光标作为输出返回。 我可以使用Oracle数据源(System.Data.Oracle.OracleCommand)调用此存储过程,但是我不知道如何使用OLEDB数据源调用此SP。 有关如何指定SP的任何帮助都返回光标,因为使用OLEDB的输出将非常受欢迎。 private static OracleCommand CreateOraStoredProcCmd() { string storedProcName = “pkg_query.prc_get_my_trades”; OracleCommand cmd = new OracleCommand(storedProcName); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue(“book_list”, “Jan, Feb”); cmd.Parameters.AddWithValue(“maturity_date_start”, DateTime.Now.ToString(“dd-MMM-yyyy”)); cmd.Parameters.AddWithValue(“maturity_date_end”, DateTime.Now.ToString(“dd-MMM-yyyy”)); cmd.Parameters.AddWithValue(“ccy_list”, “GBP,USD”); cmd.Parameters.Add(“trades”, OracleType.Cursor).Direction = ParameterDirection.Output; return cmd; } 我不知道如何指定参数“trades”是OledbCommand对象上的输出光标。 提前致谢!

INSERT语句中的语法错误进入MS Access

我在以下INSERT语句中找不到语法错误。 public partial class doRegister : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string str = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\database”; using (OleDbConnection con = new OleDbConnection(str)) using (OleDbCommand cmd = con.CreateCommand()) { cmd.CommandText = “INSERT INTO users (staffID,accessLevelIdD,username,password,email) VALUES (@staffID, ‘2’, @username,@password,@email)”; cmd.Parameters.AddWithValue(“@staffID”, Request.Form[“staffid”]); cmd.Parameters.AddWithValue(“@password”,Request.Form[“confpassword”]); cmd.Parameters.AddWithValue(“@username”, Request.Form[“username”]); cmd.Parameters.AddWithValue(“@email”, Request.Form[“email”]); con.Open(); try { cmd.ExecuteNonQuery(); MessageBox.Show(“Successfully registered!”); […]

执行OleDbCommand时出错..“必须声明标量变量”@MaxID“。”

private void AddValue(string strValue) { //get the maximum id for Lists first int MaxID = DataOperations.ReturnMaxIDInATable(“Lists”, connString); int iSqlStatus = 0; string query = “INSERT INTO Lists(ID, ListName, ListValue) VALUES(@MaxID, @ListName, @ListValue)”; MaxID++; OleDbConnection dbConn = new OleDbConnection(connString); OleDbCommand dbComm = new OleDbCommand(); dbComm.Parameters.Clear(); try { dbComm.CommandText = query; dbComm.CommandType = CommandType.Text; OleDbParameter IDParam = […]

数据库Command对象的参数顺序真的很重要吗?

我正在调试数据库操作代码,我发现虽然代码从未失败,但从未发生过正确的UPDATE。 这是代码: condb.Open(); OleDbCommand dbcom = new OleDbCommand(“UPDATE Word SET word=?,sentence=?,mp3=? WHERE id=? AND exercise_id=?”, condb); dbcom.Parameters.AddWithValue(“id”, wd.ID); dbcom.Parameters.AddWithValue(“exercise_id”, wd.ExID); dbcom.Parameters.AddWithValue(“word”, wd.Name); dbcom.Parameters.AddWithValue(“sentence”, wd.Sentence); dbcom.Parameters.AddWithValue(“mp3”, wd.Mp3); 但经过一些调整后,这有效: condb.Open(); OleDbCommand dbcom = new OleDbCommand(“UPDATE Word SET word=?,sentence=?,mp3=? WHERE id=? AND exercise_id=?”, condb); dbcom.Parameters.AddWithValue(“word”, wd.Name); dbcom.Parameters.AddWithValue(“sentence”, wd.Sentence); dbcom.Parameters.AddWithValue(“mp3”, wd.Mp3); dbcom.Parameters.AddWithValue(“id”, wd.ID); dbcom.Parameters.AddWithValue(“exercise_id”, wd.ExID); 为什么在OleDb连接的情况下必须在WHERE子句中给出最后一个参数是如此重要? 之前使用过MySQL,我可以(并且通常会)首先编写WHERE子句的参数,因为这对我来说更合乎逻辑。 一般查询数据库时参数顺序是否重要? 一些性能问题还是什么? […]

插入访问数据库

我无法将文本框中的数据插入ms访问数据库,我收到错误“ Syntax error in INSERT INTO. ”。 有人可以帮帮我吗? 这是代码: public void button1_Click(object sender, EventArgs e)//save { using (OleDbConnection conn = new OleDbConnection(@”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\productdb.mdb”)) { OleDbCommand CmdSql = new OleDbCommand(“Insert into [product](Kod, names, price,type,volume,manufacturer,importer) enter code here { conn.Open(); CmdSql.Parameters.AddWithValue(“@Kod”, textBox1.Text); CmdSql.Parameters.AddWithValue(“@names”, textBox2.Text); CmdSql.Parameters.AddWithValue(“@price”, textBox3.Text); CmdSql.Parameters.AddWithValue(“@type”, textBox4.Text); CmdSql.Parameters.AddWithValue(“@volume”, textBox5.Text); CmdSql.Parameters.AddWithValue(“@manufacturer”, textBox6.Text); CmdSql.Parameters.AddWithValue(“@importer”, textBox7.Text); CmdSql.ExecuteNonQuery();// i get […]

OleDbParameters和参数名称

我有一个SQL语句,我正在通过OleDb执行,语句是这样的: INSERT INTO mytable (name, dept) VALUES (@name, @dept); 我正在向OleDbCommand添加参数,如下所示: OleDbCommand Command = new OleDbCommand(); Command.Connection = Connection; OleDbParameter Parameter1 = new OleDbParameter(); Parameter1.OleDbType = OleDbType.VarChar; Parameter1.ParamterName = “@name”; Parameter1.Value = “Bob”; OleDbParameter Parameter2 = new OleDbParameter(); Parameter2.OleDbType = OleDbType.VarChar; Parameter2.ParamterName = “@dept”; Parameter2.Value = “ADept”; Command.Parameters.Add(Parameter1); Command.Parameters.Add(Parameter2); 我得到的问题是,如果我添加参数以反过来命令,那么列将填充错误的值(即名称在dept列中,反之亦然) Command.Parameters.Add(Parameter2); Command.Parameters.Add(Parameter1); 我的问题是,如果参数值只是按照添加命令的顺序插入到表中,参数名称的重点是什么? 参数名称似乎多余?