以下代码执行简单的插入命令.如果连续调用2000次(插入2,000行),则抛出一个带有message ="System Resources Exceeded"的OleDbException.还有什么我应该做的事情来释放资源吗?
using (OleDbConnection conn = new OleDbConnection(connectionString))
using (OleDbCommand cmd = new OleDbCommand(commandText, conn))
{
conn.Open();
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud) 谁能告诉我OleDB连接字符串只是exclusively用于读取其他用户打开的Excel文件?
我试过跟随连接字符串,这对我不起作用: -
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Mode=Read;Extended Properties=\"Excel 8.0;HDR=YES;ReadOnly=true;\"";
Run Code Online (Sandbox Code Playgroud)
当其他用户打开时,此连接字符串抛出以下异常: -
The Microsoft Jet database engine cannot open the file ''. It is already opened exclusively by another user, or you need permission to view its data.
Run Code Online (Sandbox Code Playgroud)
笔记:
我有一张桌子上有"SEMESTER,SUBJECT,OFFER,RESULT",其中"SEMESTER"和"SUBJECT"是主要的.当我使用查询
"DELETE FROM Course_Information WHERE Semester = 1 AND Subject = 'CSE-414' ;
它在访问数据库中完美地工作,但是当我尝试在我的c#代码中使用它时,我总是会遇到异常.
此外,如果我使用"DELETE FROM Course_Information WHERE Semester = 1;
我想在WHERE条件下同时使用"SUBJECT"和"SEMESTER"(因为在同一学期可能会有不同的科目)
看我的代码,
connection_string = aConnection.return_connectionString(connection_string);
string sql_query = "DELETE FROM Course_Information WHERE Semester = " + this.textBox1.Text + " AND Subject = " + this.textBox2.Text + " ;";
OleDbConnection connect = new OleDbConnection(connection_string);
OleDbCommand command = new OleDbCommand(sql_query, connect);
try
{
connect.Open();
OleDbDataReader reader = command.ExecuteReader();
MessageBox.Show("Delete Successful!");
connect.Close();
UpdateDatabase();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud) 请您检查以下代码是否存在导致"条件表达式中的数据类型不匹配"异常的错误?我似乎无法找到问题的根源......

*record.Date可空DateTime?类型的*被明确地转换为DateTime
*record.Date被设置为可为空,用于程序中的其他用途.但是从DateTimePicker检索INSERT操作的record.Date集合,因此该方法的值永远不应为null.record.Date
哪里

和(如果你想知道的话)

从我的Access文件(设计视图):

谢谢!
这是AddRecord方法.谢谢!
public static int AddRecord(Record record)
{
OleDbConnection connection = LABMeetingRecordsDB.GetConnection();
string insertStatement = "INSERT INTO DocumentInfo " +
"([FileName], [Date], [Subject], [Type]) " +
"VALUES (?, ?, ?, ?)";
try {
OleDbCommand insertCommand = new OleDbCommand(insertStatement, connection);
insertCommand.Parameters.AddWithValue("@FileName", record.FileName);
insertCommand.Parameters.AddWithValue("@Date", (DateTime)record.Date);
insertCommand.Parameters.AddWithValue("@Subject", record.Subject);
insertCommand.Parameters.AddWithValue("@Type", record.getDBType());
connection.Open();
insertCommand.ExecuteNonQuery();
string selectStatement = "SELECT IDENT_CURRENT('DocumentInfo') FROM DocumentInfo"; …Run Code Online (Sandbox Code Playgroud) 我糊涂了.我正在尝试使用ASP.Net将单个记录添加到Access 2000数据库中.但是,当我尝试添加新记录时,我收到以下错误:
异常详细信息:System.Data.OleDb.OleDbException:操作必须使用可更新的查询.
我无法填写数据 OleDbDataAdapter
我收到OleDbException以下消息
Syntax error in FROM clause.
在这条线上 adapter.Fill(dataset, "User")
这是代码
Imports System.Data.OleDb
Public Class Form1
Public connection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyDatabase.mdb;Persist Security Info=False")
Private Sub button_display_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button_display.Click
connection.Close()
connection.Open()
Dim adapter As New OleDbDataAdapter
adapter.SelectCommand = New OleDbCommand
adapter.SelectCommand.Connection = connection
adapter.SelectCommand.CommandText = "select * from user;"
Dim dataset As New DataSet
adapter.Fill(dataset, "User")
connection.Close()
Dim datarow = dataset.Tables("User").Rows(0)
Dim fname, lname As String
fname = datarow(0)
lname …Run Code Online (Sandbox Code Playgroud) Web服务中的以下代码有问题。寻找了解决方案,但是我所看到的似乎与我在下面所做的没什么不同。
注意:字符串变量'AccountNo'被传递到包含以下代码的函数中。
该错误在代码的最后一行-ExecuteReader上生成。
Dim sConnString As String
Dim rdr As OleDbDataReader
Dim orderPaid As Decimal
Dim fbeused As Decimal
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\orders.mdb'"
Dim conn As New OleDbConnection(sConnString)
Dim sb As New StringBuilder
sb.Append("SELECT DISTINCTROW OrderHeaders.Accountno, Sum(([paidqty]*[unitprice])*[orderheaders].[entpercent]/100) AS orderpaid, Sum([freeqty]*[unitprice]) AS fbeused")
sb.Append(" FROM OrderHeaders INNER JOIN OrderDetails ON OrderHeaders.[OrderNo] = OrderDetails.[OrderNo]")
sb.Append(" GROUP BY OrderHeaders.Accountno HAVING OrderHeaders.Accountno=?")
Dim sqlString As String = sb.ToString
Dim cmd As New OleDbCommand(sqlString, conn)
cmd.CommandType = CommandType.Text
'cmd.Parameters.AddWithValue("AccNo", AccountNo)
cmd.Parameters.Add("AccNo", OleDbType.VarWChar).Value = AccountNo
conn.Open() …Run Code Online (Sandbox Code Playgroud) 我正在使用MS Access数据库.我想获得2个日期之间的第一个和最后一个记录.但是在使用BETWEEN运算符时出错:
查询表达式'Datum_k BETWEEN 3.4.2017中的语法错误数.和3.4.2017.'.
我的代码:
private void GetPrviZadnjiBrojRacuna()
{
OleDbCommand commandOD = new OleDbCommand("SELECT Dokument FROM DnevniPromet WHERE (Datum_k BETWEEN " + datumOd + " AND " + datumDo + ") ORDER BY [Datum_k] ASC", dataModel.CS);
OleDbCommand commandDO = new OleDbCommand("SELECT Dokument FROM DnevniPromet WHERE [Datum_k] >= " + datumOd + " AND [Datum_k] <= " + datumDo + " ORDER BY [Datum_k] DESC", dataModel.CS);
try
{
dataModel.DT.Clear();
OleDbDataAdapter ODbDA = new OleDbDataAdapter(commandOD);
if (!dataModel.CS.State.Equals(ConnectionState.Open))
{
dataModel.CS.Open(); …Run Code Online (Sandbox Code Playgroud)