Вы можете проверить, какое имя принимает только текст и пробелы, вы можете использовать это выражение / ^ [a-zA-Z \ s] + $ / прочитать об этом в этом ответе https://stackoverflow.com/a / 12778207/615274 . Проверка сообщения немного проще. С помощью атрибута maxlength можно определить максимальное количество символов, принимаемых в текстовой области. Эта возможность может помешать вам писать код. Пожалуйста, посмотрите на следующий пример
const form = document.forms.form;
form.addEventListener('submit', handleSubmit, true);
function handleSubmit(event) {
event.preventDefault();
const name = this.name.value;
const message = this.message.value;
if (!isValidName(name)) {
alert('Not valid name!');
return false;
}
if (!isValidMessage(message)) {
alert('Not valid message!');
return false;
}
this.submit();
}
function isValidName(name) {
// const expresion = /^[A-Za-z]+$/;
const expresion = /^[a-zA-Z\s]+$/;
return expresion.test(name);
}
function isValidMessage(message) {
if (message.length > 200) {
return false;
}
return true;
}
Я не думаю, что существует что-либо в.NET и быстрой проверке (собственного) ODBC, который API показывает некоторым функциям, которые могли бы помочь:
Учитывая путь буферы используются в API ODBC, тщательное прикрепление символьных массивов будет необходимо.
Вы могли назвать SQLDataSources-функцию в ODBC32.DLL:
using System.Runtime.InteropServices;
public static class OdbcWrapper
{
[DllImport("odbc32.dll")]
public static extern int SQLDataSources(int EnvHandle, int Direction, StringBuilder ServerName, int ServerNameBufferLenIn,
ref int ServerNameBufferLenOut, StringBuilder Driver, int DriverBufferLenIn, ref int DriverBufferLenOut);
[DllImport("odbc32.dll")]
public static extern int SQLAllocEnv(ref int EnvHandle);
}
Пример, который перечисляет Источники данных:
public void ListODBCsources()
{
int envHandle=0;
const int SQL_FETCH_NEXT = 1;
const int SQL_FETCH_FIRST_SYSTEM = 32;
if (OdbcWrapper.SQLAllocEnv(ref envHandle) != -1)
{
int ret;
StringBuilder serverName = new StringBuilder(1024);
StringBuilder driverName = new StringBuilder(1024);
int snLen = 0;
int driverLen = 0;
ret = OdbcWrapper.SQLDataSources(envHandle, SQL_FETCH_FIRST_SYSTEM, serverName, serverName.Capacity, ref snLen,
driverName, driverName.Capacity, ref driverLen);
while (ret == 0)
{
System.Windows.Forms.MessageBox.Show(serverName + System.Environment.NewLine + driverName);
ret = OdbcWrapper.SQLDataSources(envHandle, SQL_FETCH_NEXT, serverName, serverName.Capacity, ref snLen,
driverName, driverName.Capacity, ref driverLen);
}
}
}
Первый вызов к SQLDataSources с SQL_FETCH_FIRST_SYSTEM
говорит функции запускать список с Системы-DSNs. Если Вы просто запустили с SQL_FETCH_NEXT
это сначала перечислило бы драйверы. Свяжитесь с функцией касательно на сайте Microsofts
Править:
Все, кажется, знают это, но я просто узнал вчера, когда я использовал этот код в новом poject: при компиляции этого с VS в Windows на 64 бита, необходимо установить "Целевую платформу" на "x86", или код не будет работать.
Я использую следующий код для получения DSN из реестра:
private List<string> EnumDsn()
{
List<string> list = new List<string>();
list.AddRange(EnumDsn(Registry.CurrentUser));
list.AddRange(EnumDsn(Registry.LocalMachine));
return list;
}
private IEnumerable<string> EnumDsn(RegistryKey rootKey)
{
RegistryKey regKey = rootKey.OpenSubKey(@"Software\ODBC\ODBC.INI\ODBC Data Sources");
if (regKey != null)
{
foreach (string name in regKey.GetValueNames())
{
string value = regKey.GetValue(name, "").ToString();
yield return name;
}
}
}
Странно, что у вас есть неанглийское имя для ключа «Источники данных ODBC» ... У меня есть французский версия Windows, и название по-прежнему на английском
If you are using a Windows Forms Application (not a Web environment), you could use the Visual Studio's "Choose Data Source" dialog.
It's included in an assembly and can be easily used.
The article where I found this info: http://www.mztools.com/articles/2007/MZ2007011.aspx
In any case, I'm from Spain and I also use the Registry solution (specially in Web apps). I've never found a machine with those entries in a language different from English.
Espero ser de ayuda...